Автор: Jon_Dow
Дата сообщения: 04.08.2016 09:19
carlosutah
<Win>+<R>
cmd.exe
FOR /?
И получишь [more=результат]
Код: Выполнение указанной команды для каждого файла набора.
FOR %переменная IN (набор) DO команда [параметры]
%переменная Однобуквенный подставляемый параметр.
(набор) Определяет набор, состоящий из одного или нескольких
файлов. Допускается использование подстановочных
знаков.
команда Команда, которую следует выполнить для каждого файла.
параметры Параметры и ключи для указанной команды.
В пакетных файлах для команды FOR используется запись
%%переменная вместо %переменная. Имена переменных
учитывают регистр букв (%i отличается от %I).
Если включена расширенная обработка команд, поддерживаются
следующие дополнительные формы команды FOR:
FOR /D %переменная IN (набор) DO команда [параметры]
Если набор содержит подстановочные знаки, команда выполняется
для всех подходящих имен каталогов, а не имен файлов.
FOR /R [[диск:]путь] %переменная IN (набор) DO команда [параметры]
Выполнение команды для каталога [диск:]путь, а также для всех
подкаталогов этого пути. Если после ключа /R не указано имя
каталога, используется текущий каталог. Если набор - это
одиночный символ точки (.), команда просто перечисляет дерево каталогов.
FOR /L %переменная IN (начало,шаг,конец) DO команда [параметры]
Набор раскрывается в последовательность чисел с заданными
началом, концом и шагом приращения. Так, набор (1,1,5)
раскрывается в (1 2 3 4 5), а набор (5,-1,1) - в (5 4 3 2 1)
FOR /F ["ключи"] %переменная IN (набор-файлов) DO команда [параметры]
FOR /F ["ключи"] %переменная IN ("строка") DO команда [параметры]
FOR /F ["ключи"] %переменная IN ('команда') DO команда [параметры]
или, если использован параметр usebackq:
FOR /F ["ключи"] %переменная IN (набор-файлов) DO команда [параметры]
FOR /F ["ключи"] %переменная IN ('строка') DO команда [параметры]
FOR /F ["ключи"] %переменная IN (`команда`) DO команда [параметры]
Набор файлов содержит имена одного или нескольких файлов,
которые по очереди открываются, читаются и обрабатываются.
Обработка состоит в чтении файла, разбивке его на отдельные
строки текста и разборе каждой строки в ноль или более подстрок.
Затем вызывается тело цикла "for", при выполнении которого
каждая найденная подстрока используется в качестве значения
переменной. По умолчанию ключ /F выделяет из каждой строки
каждого файла первую отделенную пробелами подстроку. Пустые
строки в файле пропускаются. Необязательный параметр "ключи"
служит для переопределения правил разбора по умолчанию. Он
представляет собой заключенную в кавычки строку, содержащую
одно или несколько ключевых слов для определения параметров
разбора. Ключевые слова:
eol=c - знак начала комментария в конце строки
(допускается задание только одного знака).
skip=n - число пропускаемых при обработке строк в начале
файла.
delims=xxx - набор разделителей вместо используемых по умолчанию
пробела и знака табуляции.
tokens=x,y,m-n - номера подстрок из каждой строки, передаваемые в тело
цикла "for" для каждой итерации. При использовании
этого ключа выделяются дополнительные имена
переменных. Формат m-n представляет собой диапазон
подстрок с номерами от m по n. Если последний знак
в строке tokens= является звездочкой, создается
дополнительная переменная, значением которой будет
весь оставшийся текст в строке после разбора
последней подстроки.
usebackq - применение новой семантики, при которой строка,
заключенная в обратные кавычки, выполняется как
команда, строка, заключенная в прямые одиночные
кавычки, является строкой-литералом, а двойные
кавычки могут использоваться для задания имен
файлов в наборе.
Поясняющий пример:
FOR /F "eol=; tokens=2,3* delims=, " %i in (мойфайл.txt) do @echo %i %j %k
разбирает файл myfile.txt, пропуская все строки, которые
начинаются с символа точки с запятой, и передает вторую и
третью подстроки из каждой строки в тело цикла "for", причем
подстроки разделяются запятыми и/или пробелами.
В теле цикла переменная %i используется для второй
подстроки, %j - для третьей, а %k получает все оставшиеся
подстроки после третьей. Имена файлов, содержащие пробелы,
необходимо заключать в двойные кавычки. Чтобы использовать
двойные кавычки, необходимо использовать параметр usebackq,
иначе двойные кавычки будут восприняты как определение
строки-литерала для разбора.
Переменная %i явно объявлена в инструкции "for", а переменные
%j и %k объявляются неявно с помощью ключа tokens=.
Ключ tokens= позволяет извлечь из одной строки файла до
26 подстрок, при условии, что это не приведет к попытке
объявить переменную после буквы "z" или "Z". Следует помнить,
что имена переменных FOR являются однобуквенными,
с учетом регистра, глобальными, поэтому одновременно
не может быть активно более 52 переменных.
Логику разбора команды FOR /F можно также использовать
на явно заданной строке, заключив ее в одиночные кавычки и
указав ее в качестве параметра в скобках. Она будет разобрана
как одиночная строка из входного файла.
Наконец, команда FOR /F позволяет разобрать выходные
данные другой команды. Для этого следует использовать
в качестве параметра в скобках строку в обратных одиночных
кавычках. Эта строка передается для выполнения дочернему
обработчику команд CMD.EXE, а вывод этой команды
сохраняется в памяти и разбирается так, как если бы это
был файл. Следующий пример,
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i,
выведет перечень имен всех переменных среды в текущей
среде.
Операции подстановки ссылок на переменные команды FOR
также расширены. Допускается применение следующих
синтаксических конструкций:
%~I - из переменной %I удаляются обрамляющие кавычки (")
%~fI - переменная %I расширяется до полного имени файла
%~dI - из переменной %I выделяется только имя диска
%~pI - из переменной %I выделяется только путь к файлу
%~nI - из переменной %I выделяется только имя файла
%~xI - из переменной %I выделяется расширение имени файла
%~sI - полученный путь содержит только короткие имена
%~aI - переменная %I расширяется до атрибутов файла
%~tI - переменная %I расширяется до даты /времени файла
%~zI - переменная %I расширяется до размера файла
%~$ПУТЬ:I - проводится поиск по каталогам, заданным в
переменной среды ПУТЬ, и переменная %I
заменяется на полное имя первого найденного
файла. Если переменная ПУТЬ не определена или
в результате поиска не найден ни один файл,
то этот модификатор заменяется на пустую
строку.
При объединении нескольких операторов можно получить
следующие результаты:
~dpI - переменная I раскрывается в имя диска и путь
~nxI - переменная I раскрывается в имя файла и его
расширение
~fsI - переменная I раскрывается в полный путь с
короткими именами
~dp$ПУТЬ:I - проводится поиск по каталогам, заданным в
переменной среды ПУТЬ, и переменная I
раскрывается в имя диска и путь к первому
найденному файлу.
~ftzaI - переменная I раскрывается в строку, подобную
выдаваемой командой DIR
В приведенных выше примерах переменные I и ПУТЬ можно
заменить на другие допустимые значения. Синтаксическая
конструкция с символами ~ заканчивается допустимым именем
переменной цикла FOR.
Для имен переменных рекомендуется использовать заглавные
буквы, например, I, что делает эту конструкцию более удобной
для чтения и предотвращает ошибочное принятие их за
модификаторы, которые не различают регистр.