Всегда полезно знать магию командной строки, так как иногда проще обрабатывать команды таким образом.
В этом руководстве демонстрируется команда 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
Тем не менее, рекомендуется сначала проверить вывод, прежде чем вводить команду удаления, чтобы убедиться, что удаляются только нужные файлы. Опытные пользователи могут создать пакетный файл для регулярного выполнения файлов.