Удаление файлов скриптом по расписанию

Автор: | 02.04.2015

Можно использовать утилиту командной строки forfiles.exe, входящую в состав Windows 7 (когда-то она входила в Windows 2000 Resource Kit). Одной командой удаляются все файлы из указанной папки и вложенных в нее.

Команда для выполнения

forfiles.exe /p <Path>  /s /m *.* /d -7 /c «cmd /c del /q /f @file»
Вместо <Path>  указываем свою папку (параметр /p)
  • Возраст файлов по умолчанию 7 дней (параметр /d), но вы можете задать любое значение
  • Можно удалять файлы определенного расширения по маске (например, /m *.tmp)
  • За рекурсивное удаление (во вложенных папках) отвечает параметр /s

Конечно, в скрипте вы можете использовать несколько команд, каждая из которых будет удалять заданную папку. Справка по использованию утилиты вызывается командой forfiles /?.

FORFILES [/P <путь>] [/M <маска_поиска>] [/S]
[/C <команда>] [/D [+ | -] {dd.MM.yyyy | dd}]

Описание.
Выбор файла (или набора файлов) и выполнение команды
с этим файлом. Программа полезна для пакетных заданий.

Параметры:
/P <путь> Путь, с которого начинается поиск.
По умолчанию используется текущая
рабочая папка (.).

/M <маска_поиска> Поиск файлов с помощью маски.
Маска поиска по умолчанию «*» .

/S Рекурсивное выполнение программы forfiles
во всех подпапках, аналогично «DIR /S».

/C <команда> Команда, которая выполняется для каждого файла.
Строки команд необходимо заключать в прямые
кавычки.

Команда по умолчанию «cmd /c echo @file«.

Следующие переменные могут использоваться в строке команды:
@file — возвращает имя файла.
@fname — возвращает имя файла без расширения.
@ext — возвращает только расширение имени файла.
@path — возвращает полный путь к файлу.
@relpath — возвращает относительный путь к файлу.
@isdir — возвращает значение «TRUE», если типом файла является папка, и «FALSE» для файлов.
@fsize — возвращает размер файла в байтах.
@fdate — возвращает дату последнего изменения файла.
@ftime — возвращает время последнего изменения файла.

Для включения специальных символов в строку команды следует использовать шестнадцатеричный код символа в формате 0xHH (например, 0x09 для табуляции).
Перед внутренними командами CMD.exe необходимо ставить «cmd /c».

/D <дата> Выбор файлов, у которых дата последнего изменения больше или равна (+) либо меньше или равна (-) указанной дате при использовании формата «dd.MM.yyyy»; либо файлов, у которых дата последнего изменения больше или равна (+) текущей дате плюс «dd» дней либо меньше или равна (-) текущей дате минус «dd» дней.
Допустимым числом дней «dd» является любое число в диапазоне 0 — 32768. «+» используется по умолчанию, если знак не указан.

/? Вывод справки по использованию.

Примеры:
FORFILES /?
FORFILES
FORFILES /P C:\WINDOWS /S /M DNS*.*
FORFILES /S /M *.txt /C «cmd /c type @file | more»
FORFILES /P C:\ /S /M *.bat
FORFILES /D -30 /M *.exe
/C «cmd /c echo @path 0x09 был изменен 30 дней назад»
FORFILES /D 01.01.2001
/C «cmd /c echo @fname является новым с 1-янв-2001»
FORFILES /D +2.4.2015 /C «cmd /c echo @fname является новым сегодня»
FORFILES /M *.exe /D +1
FORFILES /S /M *.doc /C «cmd /c echo @fsize»
FORFILES /M *.txt /C «cmd /c if @isdir==FALSE notepad.exe @file»