Простые действия в Windows не всегда простые:)
Для удаления файлов старше какого-либо периода в Unix отлично справляется нативная команда find.
Для Windows времен 2000 и XP приходилось использовать либо сторонние программы, либо писать на VBS.
Но начиная с Windows7 в поставке появилась утилита forfiles, которая легко решает данную задачу.
Напишем bat-файл для удаления файлов старше 30 дней из директории C:\temp\logs:
forfiles.exe -p C:\temp\logs -s -d -30 -c "cmd /c del @path /q"
Где:
- -p — Путь
- -s — Разрешаем ходить рекурсивно
- -d — Дата (Можно указать точную дату формата ‘dd.MM.yyyy’)
- -30 — относится к ключу ‘-d’ и указывает, что ищем файлы старше 30 дней
- -с — Команда, которая выполняется для каждого файла
В двух словах:
Рекурсивно ищем все (можно искать по маске файла, добавив ключ ‘-m *.log’) файлы в директории ‘C:\temp\logs’, которые старше 30 дней, далее каждое вхождение передаем команде ‘cmd /c del @path /q‘ , где:
- cmd — интерпретатор Windows
- /c — выполнить cmd и закрыть
- del — встроенная команда windows для удаления файлов
- @path — адрес файла, который нам вернул forfiles.exe
- /q — тихий режим
Утилита forfiles.exe прекрасно работает на windowsXP и даже на Windows2000, достаточно ее скопировать с windows7 и разместить по системному пути, например в %windir%, выложил forfiles.exe на обменник.