четверг, 20 ноября 2008 г.

Удалить файл, старше чем Х дней

Всем привет, что-то я долго не писал. 

Казалось бы и было про что,  но времени не было.

Но, вот сегодня появилось время и новая интересная задача, а точнее ее интересное решение. 

Итак, очень часто у админа бывает какая-то файловая помойка, куда складываются сегодня очень, но со временем все менее и менее нужные файлы. Это могут быть логи, продажи, да все что угодно.  Возникает вопрос: "Как удалить файлы старше чем Х дней", или "Какая команда удаляет файлы старше чем Х дней". Этот вопрос возник и у меня. Скажу, что решений в гугле я нашел массу, но последнее из найденных заставило меня написать его в своем блоге, т. к. оно действительно достойно того, что б о нем знало как можно больше людей. 

Итак: Вариант 1. 

Dim Fso

Dim Directory 

Dim Modified

Dim Files

 

Set Fso = CreateObject("Scripting.FileSystemObject")

Set Directory = Fso.GetFolder("H:\archive")

Set Files = Directory.Files

 

For Each Modified in Files

If DateDiff("D", Modified.DateLastModified, Now) > 90 Then Modified.Delete

Next

Сохраняем этот текст как script_del.vbs

Пишем в коммандной строке или .bat файле cscript script_del.vbs и наслаждаемся результатом.

Этот вариант проверен и работает и даже зашедулен (не было пока времени шедулить следующий, более интересный).

Итак, Вариант 2:

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

Всего-лишь! Признаюсь честно: я только сейчас узнал за эту команду. 

Нашел я это решение вот тут: http://scottelkin.com  и говорю автору огромное спасибо.

Желаю вам бесконечного пинга и 100-летнего аптайма. 

До связи :) 

1 комментарий:

Artem комментирует...

А как реализовать скрипт, который удаляет файлы в папке, начинающиеся с буквы E?