Утилита Forfiles выбирает и выполняет команду в файле или наборе файлов. Команда в основом используется в работе командных файлов (batch file).
Синтаксис
1 2 3 |
forfiles [/p <Путь>] [/m <МаскаПоиска>] [/s] [/c "<Команда>"] [/d [{+|-}][{<Дата>|<Дни>}]] |
Параметры
- /p <Путь> — Выбор директории для начала поиска. По умолчанию поиск начнётся в текущей директории;
- /m <МаскаПоиска> — Поиск файлов по выбранной маске. По умолчанию маска *.\*;
- /s — Использовать рекурсивный поиск;
- /c «<Команда>» — Выполнить команду над каждым файлом. Строка команды должны быть взята в двойные ковычки. По умолчанию выполняется «cmd /c echo @file»;
- /d [{+|-}][{<Дата>|<Дни>}] — Выбирает файлы с последней измененной датой в течение указанного периода времени. — — Выбирает файлы с последней измененной датой позже или равной (+), или раньше или равной (-) указанной дате, где Дата — в формате мес/день/год (mm/dd/yyyy).
— Выбирает файлы с последней измененной датой позже или равной (+) текущей дате плюс указанное количество дней или раньше или равно (-) текущей даты минус количество указанных дней.
— Допустимые значения для Дней включают любое число в диапазоне 0-32,768. Если знак не указан, + используется по умолчанию; - /? — Показывает справку по утилите.
Уточнения
- Forfiles в основном используется в командных файлах;
- Команда Forfiles /s индентична команде dir /s;
- С forfiles вы можете запустить команду или передать аргументы нескольким файлам. Например, вы можете запустить команду type для всех файлов в дереве с расширением имени файла .txt. Или вы можете выполнить каждый командный файл (* .bat) на диске C: с именем файла «Myinput.txt» в качестве первого аргумента.
- При помощи forfiles вы сможете выполнить любое из следующих действий:
- Выбрать файлы по абсолютной или относительной дате с помощью параметра /d.
- Создать архив файлов с помощью таких переменных, как @FSIZE и @FDATE.
- Распределите файлы по каталогам с помощью переменной @ISDIR.
- Включить специальные символы в командной строке, используя шестнадцатеричный код для символа в формате 0xHH (например, 0x09 для tab).
- Вы можете использовать следующие команды с помощью параметра /c:
- @FILE — Имя файла;
- @FNAME — Имя файла без расширения;
- @EXT — Расширение имени файла;
- @PATH — Полный путь к файлу;
- @RELPATH — Относительный путь к файлу;
- @ISDIR — Предпологается как TRUE если файлом является директория, в противном случае переменная принимает значение FALSE;
- @FSIZE — Размер файла в байтах;
- @FDATE — Дата последних изменений файла;
- @FTIME — Время последних изменений файла;
Примеры
Вывести список всех командных файлов на диске C:
1 2 3 |
forfiles /p c:\ /s /m *.bat /c "cmd /c echo @file это командный файл" |
Для того, чтобы вывести список всех директорий на диске C:, наберите команду
1 2 3 |
forfiles /p c:\ /s /m *.* /c "cmd /c if @isdir==true echo @file это директория" |
Чтобы вывести все файлы текущей директории, которые старше по крайне мере одного года, наберите команду
1 2 3 |
forfiles /s /m *.* /d -365 /c "cmd /c echo @file файлу как минимум один год" |
Для того, чтобы вывести список файлов с надписью «файл просрочен», для каждого из файлов текущей директории старше 1 января 2018 года, наберите:
1 2 3 |
forfiles /s /m *.* /d -01/01/2018 /c "cmd /c echo @file файл просрочен" |
В последнем примере, давайте выведим список файлов с их расширениями, и между файлом и расширением поставим табуляцию
1 2 3 |
forfiles /s /m *.* /c "cmd /c echo Расширение файла: @file является 0x09@ext" |