tyghr
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору сам недавно писал: описание: Удаляет старые бэкапы, (только RAR!!!!!!, если надо и другие расширения, поправь сам) рядом с vbs должны лежать!! файл логов delold.log файл настроек delold.ini настройки в ini: foldbackup - путь к папке termdate - интервал дней хранения, после которого удаляются архивы except - названия папок, которые не надо сканировать (исключения) пример ini: foldbackup=\\srv-storage\BACKUP termdate=30 except=desktop except=site сам vbs ^ ^ Код: dim fso, foldback, termdate, except() Const ForReading = 1, ForWriting = 2, ForAppending = 8 Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0 Set objShell = WScript.CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") set Locator = createobject("wbemscripting.swbemlocator") Set ServicesSet = locator.connectserver("","\root\cimv2") foldpath = objShell.CurrentDirectory inipath=foldpath & "\delold.ini" logpath=foldpath & "\delold.log" Set f = fso.GetFile(inipath) Set flog = fso.GetFile(logpath) Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault) excount=0 Do Until ts.AtEndOfStream templine = ts.ReadLine if mid(templine,1 ,6)="except" then excount=excount + 1 Loop redim except(excount) ts.Close Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault) exnumber=1 Do Until ts.AtEndOfStream templine = ts.ReadLine select case mid(templine,1,6) case "foldba" if len(templine)>11 then foldback = mid(templine,12,len(templine)-11) case "termda" if len(templine)>9 then termdate = int(mid(templine,10,len(templine)-9)) case "except" if len(templine)>7 then except(exnumber)= mid(templine,8,len(templine)-7) : exnumber = exnumber + 1 end select Loop ts.Close Set tslog = flog.OpenAsTextStream(ForAppending, TristateUseDefault) currtime = Now() tslog.writeline "-------------" & currtime & "--------------" gofolder(foldback) tslog.writeline "----------------------------------------------" tslog.close Set flog = Nothing Set f = Nothing set servicesset = nothing set locator = nothing set fso = nothing set objshell = nothing Private Sub GoFolder(ByVal fldSTR) on error resume next Dim fldRUN Dim fldSUB Dim Raschir set fldRUN = fso.GetFolder(fldSTR) for i=1 to excount if lcase(fldRUN.name) = except(i) then exit sub next For Each fldSUB In fldRUN.SubFolders GoFolder fldSUB Next For Each fileSUB In fldRUN.Files raschir="" Raschir = Mid(fileSUB.Name, Len(fileSUB.Name) - 2, 3) If Raschir = "rar" Then If (currtime - fileSUB.DateLastModified) > termdate Then tslog.writeline fileSUB.path fso.DeleteFile (fileSUB.path) end if end if Next End Sub |
|