Команда FORFILES
Команда FORFILES – выполнение команды для группы файлов.
   
Команда FORFILES является удобным средством выполнения заданных команд для группы файлов в пакетных заданиях.
Формат командной строки:
FORFILES [/P <путь>] [/M <маска_поиска>] [/S] [/C <команда>] [/D [+ | -] {dd.MM.yyyy | dd}]
Параметры командной строки:
/P < путь > Путь, с которого начинается поиск.
По умолчанию используется текущая
рабочая папка (.).
/M < маска_поиска > Поиск файлов с помощью маски.
Маска поиска по умолчанию "*" .
/S Рекурсивное выполнение программы forfiles
во всех подпапках, аналогично "DIR /S".
/C < команда > Команда, которая выполняется для каждого файла.
Строки команд необходимо заключать в прямые
кавычки.
Команда по умолчанию "cmd /c echo @file".
Следующие переменные могут использоваться
в строке команды:
@file - возвращает имя файла.
@fname - возвращает имя файла без
расширения.
@ext - возвращает только расширение имени
файла.
@path - возвращает полный путь к файлу и его имя.
@relpath - возвращает относительный путь к
файлу.
@isdir - возвращает значение "TRUE", если типом
файла является папка, и "FALSE" для файлов.
@fsize - возвращает размер файла
в байтах.
@fdate - возвращает дату последнего изменения
файла.
@ftime - возвращает время последнего изменения
файла.
Для включения специальных символов в строку команды
следует использовать шестнадцатеричный код символа
в формате 0xHH (например, 0x09 для табуляции).
Перед внутренними командами CMD.exe необходимо ставить
"cmd /c".
/D < дата > Выбор файлов, у которых дата последнего изменения
больше или равна (+) либо меньше или равна
(-) указанной дате при использовании формата
"dd.MM.yyyy"; либо файлов, у которых дата последнего
изменения больше или равна (+)
текущей дате плюс "dd" дней либо меньше или
равна (-) текущей дате минус "dd" дней.
Допустимым числом дней "dd" является любое
число в диапазоне 0 - 32768.
"+" используется по умолчанию, если знак не указан.
/? Вывод справки по использованию.
Примеры использования команды FORFILES
FORFILES - отобразить список файлов текущего каталога. Команда с параметрами по умолчанию аналогична команде:
forfiles /P . /M * /C "cmd /c echo @file"
Допускается использование записей –p вместо /p - forfiles -P . -M * -C "cmd /c echo @file"
forfiles /M *.exe /C "cmd /c echo @file" | more - отобразить список файлов текущего каталога с расширением .exe в постраничном режиме вывода на экран.
forfiles /M *.exe /C "cmd /c echo @file" > list_exe.txt - то же, что и в предыдущем примере, но с выдачей результатов в текстовый файл list_exe.txt текущего каталога.
forfiles /P C:\windows\system32 /M *.exe /D +01.09.2014 /C "cmd /c echo @file" - отобразить список файлов программ ( /M *.exe ) из системного каталога Windows (/P C:\windows\system32 ) изменившихся после 01.09.2014 года.
forfiles /P C:\windows\system32 /M *.exe /D -01.09.2014 /C "cmd /c echo @file" - отобразить список файлов программ ( /M *.exe ) из системного каталога Windows (/P C:\windows\system32 ) изменившихся 01.09.2014 года или ранее.
forfiles /P %TEMP% /M *.* /D 0 /C "cmd /c echo @file размер - @fsize" - отобразить имена и размеры всех файлов из каталога временных файлов, изменившихся сегодня. Об этом можно подробно узнать на сайте библиотеки.
forfiles /P %TEMP% /M *.log /D -3 /C "cmd /c if @isdir==FALSE notepad.exe @file" - открыть в блокноте файлы с расширением .log из каталога временных файлов, изменившиеся за последние 3 дня.
FORFILES /S /P %USERPROFILE%\Documents\ /M *.doc* /D +01.08.2014 /C "cmd /c echo @path изменен @fdate @ftime" - отобразить список документов в папке "Документы" и ее подкаталогах в профиле текущего пользователя, которые были изменены после 1 августа 2014 года. Отображается полные пути и имена файлов, дата и время их изменения. Пример результата выполнения команды в среде Windows 7:
"C:\Users\USER1\Documents\classguids.docx" изменен 19.08.2014 16:09:04
"C:\Users\USER1\Documents\hardware.docx" изменен 19.08.2014 12:38:31
"C:\Users\USER1\Documents\forfiles.doc" изменен 01.09.2014 20:22:07
"C:\Users\USER1\Documents\Список файлов.docx" изменен 18.08.2014 23:56:50
. . .
FORFILES /S /P %TEMP% /M *.exe /C "cmd /c echo @path изменен @fdate" > tmp_exe_files.txt - вывести в текстовый файл tmp_exe_files.txt список всех
исполняемых файлов из каталога временных файлов текущего пользователя и его подкаталогов. Выводится полный путь, имя и время изменения, например:
"C:\Users\USER1\AppData\Local\Temp\Firefox Setup 31.0.exe" изменен 22.07.2014
"C:\Users\USER2\AppData\Local\Temp\ICReinstall_Firefox Setup 31.0.exe" изменен 22.07.2014
"C:\Users\USER2\AppData\Local\Temp\TeamViewer\Version9\TeamViewer_.exe" изменен 02.07.2014
"C:\Users\USER1\AppData\Local\Temp\Temp1_DR_Vista_WL167g.zip\Vista\Driver\x64\Setup.exe" изменен 16.10.2008
"C:\Users\USER2\AppData\Local\Temp\Temp1_Dr_WL_167g_Win7.zip\Driver\x64\AutoInstall.exe" изменен 23.11.2009
|