Скрипт для видалення файлів старше n днів

Цей скрипт може бути корисний для очищення папки в якій зберігаються лог-файли або резервні копії.

Для використання створіть файл kill2date.vbs з наведеними нижче скриптом. Шлях до папки і кількість днів вказуються в змінних path і killdate:


path = "C: \ Temp"
killdate = date () - 7
arFiles = Array ()
set fso = createobject ( «scripting.filesystemobject»)

SelectFiles path, killdate, arFiles, truenDeleted = 0
for n = 0 to ubound (arFiles)
on error resume next
arFiles (n) .delete true
if err.number <> 0 then
wscript.echo "Unable to delete:" arFiles (n) .path
else
nDeleted = nDeleted + 1
end if
on error goto 0
next

msgbox nDeleted "Of" ubound (arFiles) +1 _
"Eligible files were deleted"

sub SelectFiles (sPath, vKillDate, arFilesToKill, bIncludeSubFolders)
on error resume next
set folder = fso.getfolder (sPath)
set files = folder.files

for each file in files
dtlastmodified = null
on error resume Next
dtlastmodified = file.datelastmodified
on error goto 0
if not isnull (dtlastmodified) Then
if dtlastmodified count = ubound (arFilesToKill) + 1
redim preserve arFilesToKill (count)
set arFilesToKill (count) = file
end if
end if
next

if bIncludeSubFolders then
for each fldr in folder.subfolders
SelectFiles fldr.path, vKillDate, arFilesToKill, true
next
end if
end sub

Будь ласка, оцініть цю статтю:

(Всього оцінок: 11, середня: 5,00 з 5)

Видалити файл, старше ніж Х днів можна за допомогою команди

Forfiles -p c: \ backup -s -m *. * -d -5 -c «cmd / c del / q @path»

Абсолютно вірно, Олександр. Єдине треба або взагалі опустити параметр -m тому за замовчуванням використовується маска пошуку «*» (100% справедливо для версії forfiles в Windows 7, в інших не пам'ятаю), або вказати явно «-m *». Інакше в тому вигляді, як вказали ви, що не будуть оброблені файли без розширень.

це вже більше схоже на людський підхід, а не на цей монструозної скрипт. мелкософта як завжди на висоті. ось якою командою це вирішується в unix / linux сістемах.как йдеться відчуйте різницю. морок коротше.
find -type f -ctime +2 -delete

Так, для кожного завдання є свій інструмент.