forfiles

Выбирает и выполняет команду в файле или наборе файлов. Эта команда чаще всего используется в пакетных файлах.

Syntax

forfiles [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] [{<date> | <days>}]]

Parameters

Parameter Description
/ <pathname> Указывает путь, с которого нужно запустить поиск. По умолчанию поиск начинается в текущем рабочем каталоге.
<searchmask> Выполняет поиск файлов в соответствии с указанной маской поиска. По умолчанию используется поисковая маска *.
/S Указывает команде forfiles выполнять рекурсивный поиск в подкаталогах.
<command> Выполняет указанную команду в каждом файле. Строки команд должны быть заключены в двойные кавычки. Команда по умолчанию — "cmd /c echo @file".
/D [{+\|-}][{<date> | <days>}] Выбирает файлы с последней датой изменения в течение указанного интервала времени:
  • Выбирает файлы с датой последнего изменения, более поздней или равной (+) указанной дате или более ранней или равной (-), где дата имеет тот же региональный формат, что и ваше устройство Windows, например MM/DD/YYYY для английского языка (США).
  • Выбирает файлы с последней датой изменения более поздней или равной (+) текущей дате, а также числу указанных дней или более ранним или равным (-) текущей дате минус указанное число дней.
  • Допустимые значения для дней включают любое число в диапазоне от 0 до 32 768. Если знак не указан, + используется по умолчанию.
/? Отображает текст справки в окне cmd.

Remarks

  • Команда forfiles /S аналогична dir /S.

  • В командной строке можно использовать следующие переменные, как указано в параметре командной строки /C :

    Variable Description
    @FILE File name.
    @FNAME Имя файла без расширения.
    @EXT Расширение имени файла.
    @PATH Полный путь к файлу.
    @RELPATH Относительный путь к файлу.
    @ISDIR Вычисляется значение TRUE, если тип файла является каталогом. В противном случае эта переменная оценивается как FALSE.
    @FSIZE Размер файла в байтах.
    @FDATE Последняя метка даты изменения в файле.
    @FTIME Последняя измененная метка времени в файле.
  • Команда forfiles позволяет выполнить команду над несколькими файлами или передать им аргументы. Например, можно выполнить команду type для всех файлов в дереве с расширением .txt имя файла. Или можно выполнить каждый пакетный файл (*.bat) на диске C с именем файла Myinput.txt в качестве первого аргумента.

  • Эта команда может:

    • Выберите файлы по абсолютной или относительной дате с помощью параметра /d .

    • Создайте дерево архивных файлов с помощью таких переменных, как @FSIZE и @FDATE.

    • Отличить файлы от каталогов с помощью переменной @ISDIR.

    • Включите специальные символы в командную строку с помощью шестнадцатеричного кода для символа в формате 0xHH (например, 0x09 для табуляции).

  • Эта команда работает путем реализации флага recurse subdirectories на средствах, предназначенных для обработки только одного файла.

Examples

Чтобы получить список всех пакетных файлов на диске C, введите следующее:

forfiles /P c:\ /S /M *.bat /C "cmd /c echo @file is a batch file"

Чтобы получить список всех каталогов на диске C, введите следующее:

forfiles /P c:\ /S /M * /C "cmd /c if @isdir==TRUE echo @file is a directory"

Чтобы получить список всех файлов в текущем каталоге, которые по крайней мере один год, введите:

forfiles /S /M *.* /D -365 /C "cmd /c echo @file is at least one year old."

Чтобы отобразить устаревший текстовый файл для каждого из файлов в текущем каталоге, которые старше 1 января 2007 года, введите:

forfiles /S /M *.* /D -01/01/2007 /C "cmd /c echo @file is outdated."

Чтобы вывести список расширений имени файла всех файлов в текущем каталоге в формате столбца и добавить вкладку перед расширением, введите:

forfiles /S /M *.* /C "cmd /c echo The extension of @file is 0x09@ext"