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

Попробуйте наш инструмент устранения неполадок

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

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

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

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

FORFILES [/ P pathname] [/ M searchmask] [/ S] [/ C command] [/ D [+ | -] дд / ММ / гггг]

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

forfiles

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

  • / 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 Выбирает файлы с датой последнего изменения, которая больше или равна (+), или меньше или равна (-) указанной дате, используя формат «дд / ММ / гггг»; или выбирает файлы с датой последнего изменения, которая больше или равна (+) текущей дате плюс «дд» дней, или меньше или равна (-) текущей дате минус «дд» дней. Допустимое количество дней «дд» может быть любым числом в диапазоне от 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 @ файл

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