Используйте Forfiles для обработки файлов в зависимости от возраста

Всегда полезно знать магию командной строки, так как иногда проще обрабатывать команды таким образом.

В этом руководстве демонстрируется команда Forfiles в Windows Vista и Windows 7 (обновление: также доступно в более новых версиях Windows).

Forfiles может обрабатывать файлы на основе имен, расширений и возраста. Например, можно найти все документы в каталоге старше 20 дней или все документы в каталоге c: \, которые были изменены с определенной даты.

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

FORFILES [/ P pathname] [/ M searchmask] [/ S] [/ C команда] [/ D [+ | -] дд / мм / гггг]

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

Список параметров:

  • / P pathname Указывает путь для начала поиска. Папка по умолчанию - это текущий рабочий каталог (.).
  • / M searchmask Поиск файлов в соответствии с поисковой маской. По умолчанию маска поиска - '*'.
  • / S Указывает, что файлы следует преобразовывать в подкаталоги. Как "DIR / S".
  • Команда / C Указывает команду для выполнения для каждого файла. Командные строки должны быть заключены в двойные кавычки. По умолчанию используется команда «cmd / c echo @file».

Следующие переменные могут быть использованы в командной строке:

  • @file - возвращает имя файла.
  • @fname - возвращает имя файла без расширения.
  • @ext - возвращает только расширение файла.
  • @path - возвращает полный путь к файлу.
  • @relpath - возвращает относительный путь к файлу.
  • @isdir - возвращает «ИСТИНА», если тип файла является каталогом, и «ЛОЖЬ» для файлов.
  • @fsize - возвращает размер файла в байтах.
  • @fdate - возвращает дату последнего изменения файла.
  • @ftime - возвращает время последнего изменения файла.

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

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

/? Отображает это справочное сообщение. Этот файл справки можно открыть, введя команду forfiles /? в командной строке. Нажмите Windows-R, введите cmd и нажмите Enter, чтобы запустить командную строку в Windows.

Команда forfiles /P c:\test\ /M .doc /S /D -10 ищет в каталоге c: \ test и во всех его подкаталогах файлы с расширением .doc, которые старше 10 дней.

Параметр / p, за которым следует каталог, определяет начальный каталог, / s включает подкаталоги в поиске, / m фильтрует файлы и папки на основе введенной строки, а / D определяет дату или промежуток времени.

Команда / C используется для обработки найденных файлов. Например, его можно использовать для запуска следующей команды: /C "cmd /c echo @fname" > test.txt имена каждого найденного файла и сохраняет результаты в text.txt в том же каталоге.

Полная команда выглядит следующим образом: forfiles /P c:\test\ /M .doc /S /D -10 /C "cmd /c echo @fname" > test.txt

Другая возможность - удалить файлы, соответствующие поисковому запросу, это делается с помощью команды /C "cmd /c del @File

Тем не менее, рекомендуется сначала проверить вывод, прежде чем вводить команду удаления, чтобы убедиться, что удаляются только нужные файлы. Опытные пользователи могут создать пакетный файл для регулярного выполнения файлов.