Для того, чтобы в bat файле или просто в командной строке удалять файлы по дате, например, старые ненужные лог файлы, удобнее использовать программу forfiles (чем команду del).
Фильтрация файлов по дате в команде forfiles
Главное преимущество программы forfiles
состоит в возможности фильтрации файлов по дате изменения файла, причем дата может быть задана как абсолютной датой (например, 8 марта 2019 года), так и относительной датой в днях, например, 7 дней, 30 дней или любое другое число дней
Поэтому, чтобы в командном файле удалить лог файлы вида log00001.txt
, log00002.txt
… старше 1 месяца, можно выполнить такую команду.
forfiles /M "log?????.txt" /c "cmd /c del /s @file" /d -30
Эта строка задает фильтрацию файлов по маске log?????.txt
и по дате изменения 30 суток, с выполнением для каждого найденного файла команды удаления.
Выполнение forfiles для подкаталогов
Параметр /s
задает рекурсивное выполнение команды во всех вложенных папках, поэтому этот пример удалит указанные файлы во всех подпапках:
forfiles /M "log?????.txt" /s /c "cmd /c del /s @file" /d -30
Узнать больше
Команда forfiles
forfiles
корректно поддерживает работу с файлами, в именах которых есть пробелы и Unicode (не ANSI) символы.
Программа forfiles
входит в комплект Windows, начиная с Windows Vista, соответственно, эти команды удаления будут работать и во всех последующих версиях Windows, не требуя добавления исполняемого файла к bat файлу.
Для использования forfiles
в Windows XP можно взять исполняемый файл forfiles.exe
из Windows Server 2003 Resource Kit.