Полезное‎ > ‎Статьи‎ > ‎

Скрипт удаление файлов старше n дней cmd

Удаление файлов через cmd утилитой forfiles.exe
Пример как с ее помощью можно удалять бекапы старше 20 дней:



forfiles.exe /p С:\Backup\ /s /m *.* /d -20 /c "cmd /c del /q /f @file"


обычный батник - и вуаля само делает неинтересную работу..

справка по 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 +25.1.2011 /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"