forfiles

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

Синтаксис

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

Параметры

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

Замечания

  • Команда forfiles /S похожа на dir /S.

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

    «Переменная» Description
    @FILE Имя файла.
    @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 на средствах, предназначенных для обработки только одного файла.

Примеры

Чтобы получить список всех пакетных файлов на диске 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"