Используйте Forfiles для обработки файлов в зависимости от возраста
- Категория: Windows
Всегда полезно знать некоторую магию командной строки, поскольку иногда так проще обрабатывать команды.
Это руководство демонстрирует Forfiles команда в Windows Vista и Windows 7 (Обновление: также доступно в более новых версиях Windows).
Forfiles может обрабатывать файлы на основе имен, расширений файлов и возраста. Например, можно найти все документы в каталоге, которые старше 20 дней, или все документы в c: documents, которые были изменены с определенной даты.
Команду forfiles можно сочетать с параметрами обработки для удаления этих файлов или для создания списка всех файлов, соответствующих фильтрам. Давайте подробнее рассмотрим команду forfiles.
FORFILES [/ P pathname] [/ M searchmask] [/ S] [/ C command] [/ 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 Выбирает файлы с датой последнего изменения, которая больше или равна (+), или меньше или равна (-) указанной дате, используя формат «дд / ММ / гггг»; или выбирает файлы с датой последнего изменения, которая больше или равна (+) текущей дате плюс «дд» дней, или меньше или равна (-) текущей дате минус «дд» дней. Допустимое количество дней «дд» может быть любым числом в диапазоне от 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.