Как зациклить файл 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"
< /tbody>

eol: используется для указания специального символа, которым по умолчанию является точка с запятой (;). Ставится в начале строки, чтобы отметить, что эта строка является комментарием. Программа проигнорирует эту строку.

пропустить: Объявите, что количество первых строк файла будет проигнорировано, программа не будет анализировать эти строки. Пропустить по умолчанию = 0

delims: определяет символы-разделители, помогающие программе разграничить каждую строку текста на подабзацы, каждый из которых называется токеном. Токены отмечены индексами: 1, 2, 3, .

токены: объявить список интересующих индексов, разделенных запятыми. Например, токены = 1,2,4, по умолчанию: токены = 1

ОпцияОписание
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. и ссылки.

Читайте также: