понедельник, 10 декабря 2012 г.

Vbs-скрипт для удаления старых файлов и папок


     Накатал скрипт на VBScript для удаления старых файлов (в моем случае - накапливающихся бэкапов). Удаляет все файлы старше указанного количества дней из указанной директории. Также рекурсивно удаляются все её подпапки, не содержащие файлов, измененных после указанной даты.

'*  deleteoldbackups.vbs
'*  Создан:    07/12/2012
'*  Назначение: Удаляет файлы и папки старше NumOfDays дней

'Переменные для настройки
NumOfDays = 15 'число дней, все что старше - будет удалено
StartFolderPath = "X:\OLDBACKUPS"     'Путь к папке с которой будет начинаться удаление файлов и папок

'Перехват и обработка ошибок
On Error Resume Next
Dim fso
Dim objFolder
Dim objFile
Dim objSubfolder
Set fso = CreateObject("Scripting.FileSystemObject")

Set objFolder = fso.GetFolder(StartFolderPath)
DeleteOldFilesAndFolders(objFolder)

'Функция рекурсивно удаляет старые файлы и пустые папки из переданной в параметре директории
Function DeleteOldFilesAndFolders(Folder)
'сначала удаляем все старые файлы в папке старше NumOfDays
for each objFile in Folder.Files
if DateDiff("d", objFile.DateLastModified, Now) > NumOfDays Then
objFile.Delete true
end if
next
'удаляем пустые директории
for each objSubfolder in Folder.Subfolders
   if objSubfolder.Files.Count = 0
       objSubfolder.Delete true
   end if
'Повторяем для подпапок
for each objSubfolder in Folder.Subfolders
DeleteOldFilesAndFolders(objSubfolder)
next
End Function

2 комментария: