Как зациклить файл bat
Обновлено: 21.11.2024
Команда for принимает параметры при использовании флага /f. Вот список параметров, которые можно использовать:
delims=x Символ(ы) разделителя для разделения токенов
skip=n Количество пропускаемых строк в начале файлов и текстовых строк
эол=; Символ в начале каждой строки для обозначения комментария
tokens=n Пронумерованные элементы для чтения из каждой строки или строки для обработки
usebackq Использовать другой стиль цитирования:
Используйте двойные кавычки для длинных имен файлов в разделе "файлы"
Используйте одинарные кавычки для textStrings
Используйте обратные кавычки для `command`
Перебор каждой строки в наборе файлов
Следующее будет отображать каждую строку в файле C:\scripts\testFile.txt . Пустые строки не будут обрабатываться.
В более сложном примере показано, как данные, полученные в цикле FOR из набора файлов с ограниченным доступом, можно использовать для перенаправления пакетного выполнения при сохранении искомого содержимого в файл:
Обратите внимание, как длинные строки команд разбиты на несколько строк кода, а группы команд разделены круглыми скобками.
Рекурсивное посещение каталогов в дереве каталогов
команду for /r можно использовать для рекурсивного посещения всех каталогов в дереве каталогов и выполнения команды.
-
- Циклический просмотр файлов (подпапки Recurse). - Измените текущий каталог/папку и сохраните предыдущую папку/путь для использования командой POPD. - Измените каталог обратно на путь/папку, последний раз сохраненный командой PUSHD.
Переименование всех файлов в текущем каталоге
В следующем примере используется переменная с циклом for для переименования группы файлов.
Определив имя переменной %%j и связав ее со всеми текущими файлами (*.*), мы можем использовать эту переменную в цикле for для представления каждого файла в текущем каталоге.
Каждая итерация (или проход) цикла обрабатывает другой файл из определенной группы (которая в равной степени может быть любой группой, например, *.jpg или *.txt).
В первом примере мы заменяем текст: текстовая строка "old" заменяется текстовой строкой "new" (если и только если в имени файла присутствует текст "old").
Во втором примере мы добавляем текст: текст «Префикс» добавляется в начало имени файла. Это не замена. Это изменение будет применено ко всем файлам в группе.
В третьем примере снова добавляем текст: в конец имени файла добавляется текст "Суффикс". Опять же, это не замена. Это изменение будет применено ко всем файлам в группе.
Условно выполнить команду несколько раз.
Действие команды FOR можно описать следующим образом.
- Взять набор данных
- Сделайте параметр FOR %%G равным некоторой части этих данных
- Выполните команду (возможно, используя параметр как часть команды).
- Повторить для каждого элемента данных
Если вы используете команду FOR в командной строке, а не в пакетной программе, используйте только один знак процента: %G вместо %%G .
Для параметров
Первый параметр должен быть определен с помощью одного символа, например буквы G.
В каждой итерации цикла FOR предложение IN ( . ) оценивается, и %%G присваивается другое значение
Если это предложение приводит к единственному значению, тогда %%G устанавливается равным этому значению, и команда выполняется.
Если предложение приводит к нескольким значениям, то для каждого из них неявно определяются дополнительные параметры. Они автоматически назначаются в алфавитном порядке %%H %%I %%J . (неявное определение параметра)
Если параметр ссылается на файл, то можно использовать расширенную ссылку на переменную для извлечения имени файла/пути/даты/размера.
Конечно, вы можете выбрать любая буква алфавита, кроме %%G.
%%G — хороший выбор, поскольку он не конфликтует ни с одной из букв формата имени пути (a, d, f, n, p, s, t, x) и обеспечивает самый длинный ряд неконфликтующих букв для использовать в качестве неявных параметров.
G > H > I > J > K > L > M
Буквы формата чувствительны к регистру, поэтому использование заглавной буквы также является хорошим способом избежать конфликтов %%A, а не %%a .< /p>
Если вам нужно много букв параметров, полный список от младшего к старшему:
> ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ˆ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z
Начиная с %A , вы можете использовать 29 символов, прежде чем вам придется экранировать любые буквы пунктуации. [источник]
Использование переменных в цикле FOR
Переменные расширяются в начале цикла FOR и не обновляются до тех пор, пока не будет завершена вся секция DO.
В следующем примере подсчитываются файлы в текущей папке, но %count% всегда возвращает 1:@echo off
SET count=1
ДЛЯ /f "токенов =*" %%G IN ('dir /b') DO (
echo %count%:%%G
set /a count+=1 )Чтобы обновить переменные внутри на каждой итерации цикла мы должны либо использовать EnableDelayedExpansion, либо использовать механизм CALL :subroutine, как показано ниже:
@echo off
SET count=1
FOR /f "tokens= *" %%G IN ('dir /b') DO (вызов :подпрограммы "%%G")
GOTO :eof
:подпрограмма
echo %count%:%1
set /a count+=1
GOTO :eof
Вложенные команды FOR
Команды FOR могут быть вложены FOR %%G. DO (для %%U. do . )
при вложении команд выберите разные буквы для каждой части. затем вы можете обратиться к обоим параметрам в последней команде DO.Пример выхода из внутреннего цикла двух вложенных циклов FOR см. на странице EXIT.
Уровни ошибок
FOR сам по себе не устанавливает и не сбрасывает уровень ошибки, оставляя это на усмотрение вызываемой команды.
Единственным исключением является использование подстановочного знака. Если подстановочный знак не соответствует ни одному файлу, то FOR вернет %ERRORLEVEL% = 5
FOR — это внутренняя команда.
Если расширения команд отключены, команда FOR будет поддерживать только базовый синтаксис без расширенных переменных: FOR %%parameter IN (set) DO command [параметры-команды]
FOR /F "tokens=1-5" %%A IN ("Это короткое предложение") DO @echo %%A %%B %%D
приведет к выводу: Это коротко
Создайте набор из 26 папок, по одной на каждую букву алфавита:
ДЛЯ %%G IN (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u ,v,w,x,y,z) DO (md C:\demo\%%G)
«Те, кто не помнит прошлого, обречены на его повторение» — Джордж Сантаяна
Связанные команды:
FOR — циклический просмотр набора файлов в одной папке.
FOR /R - Циклический просмотр файлов (рекурсивных подпапок) .
FOR /D - Перебрать несколько папок.
FOR /L — циклический просмотр диапазона чисел.
FOR /F — циклический просмотр элементов в текстовом файле.
FOR /F — циклический просмотр вывода команды.
Параметры/аргументы %~ опции.
FORFILES - Пакетная обработка нескольких файлов.
GOTO — указание пакетной программе перейти к помеченной строке.
IF - Условно выполнить команду.
Эквивалентный PowerShell: ForEach-Object — цикл для каждого объекта в конвейере.
Эквивалентная команда bash (Linux): awk или for var в [списке]; do — развернуть список и выполнить команды.
В этом руководстве вы узнаете о пакетном файле для цикла. Точно так же, если операторы else, циклы также используются для изменения потока логики программы.
По сути, цикл означает непрерывное выполнение чего-либо, пока не будет выполнено какое-либо условие.
В пакетных файлах существует только прямая реализация цикла for. Не существует циклов while и do while, как в других языках программирования.
Пакетный файл для синтаксиса цикла
Здесь список представляет собой значения, для которых будет выполняться цикл for. Одна вещь, которую следует отметить в пакетном файле для циклов, заключается в том, что объявление переменной выполняется с %%var_name вместо %var_name% .
Давайте рассмотрим пример для иллюстрации пакетного файла для цикла.
Пакетный файл для примера цикла
Здесь, в этой программе, у нас есть 1, 2 и 3 в списке. Таким образом, для каждого элемента списка будет выполнен цикл for и будет сгенерирован следующий вывод.
Теперь, когда мы знаем о простой реализации цикла for, давайте перейдем к реализации цикла for на следующем уровне.
Пакетный файл для цикла — перебор диапазона значений
При программировании пакетных файлов цикл for также может быть реализован через диапазон значений. Ниже приведен синтаксис реализации цикла for для диапазона значений в пакетном файле.
- /L означает, что цикл for используется для перебора диапазона значений.
- Нижний предел — это значение, с которого цикл будет начинаться, пока не достигнет верхнего предела, а приращение — это значение, на которое нижний предел будет увеличиваться во время каждой итерации.
Следующий пример иллюстрирует его концепцию более подробно.
Теперь эта программа пройдет через диапазон от 0 до 3, увеличивая значение на 1 на каждой итерации.
Вывод
Пакетный файл для цикла — перебор файлов
До сих пор в цикле for мы использовали «%%», за которым следовала одна буква. Но для циклического просмотра файлов с помощью цикла for мы должны использовать «%», за которым следует одна буква, например %y.
Итак, вот синтаксис или, возможно, пример цикла for для просмотра файлов в определенном месте.
Это просмотрит все файлы в папке с фильмами D: и отобразит файлы в консоли вывода.
Пакетный файл для цикла — цикл по каталогам
Для обхода каталогов используется ‘/D/. Это показано в следующем примере.
Теперь это будет проходить даже через подкаталоги внутри папки с фильмами, если они существуют.
Итак, это все о пакетном файле для циклов. Пожалуйста, отработайте каждый фрагмент кода на своем локальном компьютере для эффективного обучения.
Подпишитесь на наши фан-страницы, чтобы получать уведомления каждый раз, когда появляются новые статьи. Фейсбук Твиттер
1- Обзор циклов на языке Batch
- Пробел
- Запятая ( , )
- Точка с запятой ( ; )
- TAB
2- Цикл For (по умолчанию)
Пример: скопируйте несколько файлов в каталог (Примечание: файлы, которые нужно скопировать в целевой каталог, должны находиться на одном и том же диске).
3- Для /R
Цикл FOR/R используется для перебора списка файлов, включая файлы в подкаталогах, внуках и т. д. Он называется рекурсивным циклом.
- [путь] : этот параметр является корневой папкой. Если этого параметра нет, "папка, содержащая исполняемый файл скрипта" hoặc "текущая папка" будет считаться корневой папкой.
- set_of_file_filters : список файловых фильтров, например *.txt, *.bat, . или точка ( . ) означает все.
- переменная: означает имя переменной и должно иметь один уникальный символ.
В следующем примере выводится список всех файлов *.txt или *.log в каталоге C:/Windows/System32 (включая поиск в подкаталогах, внучках и т. д.)
Пример перечисления всех файлов в каталоге C:/Windows/System32 (включая файлы в подкаталогах, внуках. )
4- Для /D
Цикл FOR /D используется для перебора списка каталогов, которые являются подкаталогами текущего каталога.
- set_of_directory_filters : список фильтров каталогов, например, en*, fr*. разделены стандартным разделителем.
- [/r]: это рекурсивный и необязательный параметр. Если этот параметр доступен, в цикле будут задействованы подкаталоги, внуки...
- переменная: означает имя переменной и должно иметь уникальный символ.
Пример: список подкаталогов, внуков . C:/Windows с именем, начинающимся с "en" или "fr"
5- Для /L
- start: первое значение переменной
- шаг: после каждой итерации будет добавляться значение переменной "шаг".
- конец: последнее значение.
6- Для /F
Цикл For/F — сложный, но мощный цикл. Он читает файл или несколько файлов, а затем анализирует содержимое файлов. Содержимое файла — это текст; он разбит на несколько небольших фрагментов текста, каждый из которых называется токеном. Правило по умолчанию для разделения текста основано на пробелах. Однако вы можете настроить правило разделителя с помощью параметра ["delims = xxx"].
- set_of_filenames: список одного или нескольких файлов.
- options: параметры, например, "delims=, tokens=1,2,4"
Опция | Описание |
delims=xxx | Символ(ы) разделителя. по умолчанию используется пробел |
skip=n | Номер первой строки будет игнорироваться в содержимом файла, по умолчанию skip = 0 |
eol=; | eol (конец строки): указывает специальный символ, который ставится в начале строки для обозначения эту строку как строку комментария. Строки комментариев будут игнорироваться программой, символ точки с запятой (;) по умолчанию |
tokens=n1,n2,n3 | определяет позиции, о которых заботятся (n1 , n2, n3, ..), токены по умолчанию=1 |
usebackq | (см. объяснение в примерах) |
Токены | Описание |
tokens=1,2,4 | Интересуют такие индексы, как 1, 2, 4. |
tokens=2-8 | Интересуют индексы от 2 до 8 |
tokens=3,* | Такие индексы, как 3, 4,5, . заинтересованы |
tokens=* | интересны все индексы |
Например, "tokens=1,2,4" означает, что токены на позициях 1, 2, 4 интересны, а другие токены будут проигнорированы.
Переменная Biến %%i явно объявлена в цикле. Переменные %%j, %%k объявлены неявно (имена неявных переменных являются следующими символами имен явных переменных).
Посмотреть дополнительные руководства:
Это онлайн-курсы за пределами представленного нами веб-сайта o7planning, которые могут включать бесплатные курсы или курсы со скидкой.
В этом уроке мы увидим, как увеличивать счетчик с помощью цикла For Loop. Пакетный файл содержит ряд инструкций DOS (дисковая операционная система). Это позволяет инициировать выполнение команд, найденных в этом файле.
Пример 1. Подсчет от 1 до N в пакетном файле с использованием цикла For
В следующем примере используется цикл for для подсчета от 1 до 10:
Пример 2. Подсчет от 1 до N в пакетном файле с использованием оператора Goto
В следующем примере оператор goto используется для подсчета от 1 до 10:
Вам также может понравиться
Пакетный файл для получения текущего каталога
Как создать пакетный файл в Windows
Как включить режим максимальной производительности в Windows 10
Оставить ответ Отменить ответ
Последние сообщения
Что такое Web Worker в JavaScript?
В этом руководстве мы рассмотрим, что такое Web Worker в JavaScript? Web Worker позволяет нам
Как отсортировать массив строк в JavaScript?
О нас
Научитесь программировать на разных языках программирования, таких как PHP, Java, Python, C/C++ и т. д., а также на таких фреймворках, как Laravel, Django, Spring и т. д., с помощью наших простых руководств, примеров, упражнений, mcq. и ссылки.
Читайте также:
- Как проводится компьютерная томография легких?
- Где купить термопасту для ПК
- Убедитесь, что dll является правильным файлом dll или ocx
- Что такое облачная подпись
- Как компьютеры используются в производстве