Как сделать цикл в командном файле Windows? - PullRequest
138 голосов
/ 31 августа 2009

Каков синтаксис цикла FOR в пакетном файле Windows?

Ответы [ 8 ]

183 голосов
/ 22 августа 2010

Если вы хотите сделать что-то x раз, вы можете сделать это:

Пример (x = 200):

FOR /L %%A IN (1,1,200) DO (
  ECHO %%A
)

1,1,200 означает:

  • Старт = 1
  • Приращение за шаг = 1
  • Конец = 200
100 голосов
/ 31 августа 2009
FOR %%A IN (list) DO command parameters

list - это список любых элементов, разделенных пробелами, запятыми или точками с запятой.

команда может быть любой внутренней или внешней командой, командным файлом или даже - в OS / 2 и NT - списком команд

параметры содержит параметры командной строки для команды. В этом примере команда будет выполнена один раз для каждого элемента в списке, используя параметры, если они указаны.

Специальный тип параметра (или даже команды) - это %% A, который будет последовательно заменяться каждым элементом из списка.

С Циклы FOR

51 голосов
/ 31 августа 2009

Тип:

for /?

и вы получите несколько страниц справочного текста.

27 голосов
/ 07 октября 2016

Условно выполнить команду несколько раз.

  • синтаксис FOR-Files

    FOR %%parameter IN (set) DO command 
    
  • Синтаксис FOR-Files-Rooted по пути

    FOR /R [[drive:]path] %%parameter IN (set) DO command 
    
  • синтаксис FOR-папок

    FOR /D %%parameter IN (folder_set) DO command 
    
  • Синтаксис-для-Список чисел

    FOR /L %%parameter IN (start,step,end) DO command 
    
  • синтаксис-для-содержимого файла

    FOR /F ["options"] %%parameter IN (filenameset) DO command 
    

    или

    FOR /F ["options"] %%parameter IN ("Text string to process") DO command
    
  • Результаты синтаксиса для команды

    FOR /F ["options"] %%parameter IN ('command to process') DO command
    

Он

  • Взять набор данных
  • Сделать параметр FOR %%G равным некоторой части этих данных
  • Выполнить команду (необязательно, используя параметр как часть команды).
  • -> Повторить для каждого элемента данных

Если вы используете команду FOR в командной строке, а не в пакетной программе, используйте только один знак процента: %G вместо %%G.

FOR Параметры

  • Первый параметр должен быть определен с использованием одного символа, например буквы G.

  • FOR %%G IN ...

    В каждой итерации цикла FOR оценивается предложение IN ( ....) и %%G устанавливается другое значение

    Если это предложение приводит к одному значению, то %% G устанавливается равным этому значению, и команда выполняется.

    Если предложение приводит к нескольким значениям, то дополнительные параметры неявно определяются для хранения каждого из них. Они автоматически присваиваются в алфавитном порядке %%H %%I %%J ... (неявное определение параметров)

    Если параметр ссылается на файл, то для извлечения имени файла / пути / даты / размера может использоваться расширенная ссылка на переменную.

    Конечно, вы можете выбрать любую букву алфавита, кроме %%G. но это хороший выбор, потому что он не конфликтует ни с одной из букв формата пути (a, d, f, n, p, s, t, x) и обеспечивает самый длинный цикл не конфликтующих букв для использования в качестве неявных параметров .

16 голосов
/ 08 июня 2011

FOR предоставит вам всю необходимую информацию о циклах FOR, включая примеры правильного использования.

13 голосов
/ 07 августа 2012

Попробуйте этот код:

@echo off
color 02
set num1=0
set num2=1 
set terminator=5
:loop
set /a num1= %num1% + %num2%
if %num1%==%terminator% goto close
goto open
:close
echo %num1%
pause 
exit
:open
echo %num1%
goto loop

num1 - это число, которое необходимо увеличить, а num2 - это значение, добавленное к num1, а терминатор - это значение, в котором заканчивается num1. В этом выражении вы можете указать другое значение терминатора (if %num1%==%terminator% goto close). Это логическое выражение. Goto close - это процесс, если логическое значение равно true, а goto open - процесс, если логическое значение равно false.

5 голосов
/ 01 декабря 2016

С FOR /? Справочный документ:

FOR% переменная IN (установка) DO команда [команда-параметры]

% переменная Указывает заменяемый параметр из одной буквы.
(set) Определяет набор из одного или нескольких файлов. Подстановочные знаки могут быть использованы. команда Указывает команду для выполнения каждого файла.
Команда-параметры
Определяет параметры или переключатели для указанной команды.

Чтобы использовать команду FOR в пакетной программе, укажите вместо нее переменную %%
% переменной. Имена переменных чувствительны к регистру, поэтому% i отличается
от% I.

Если включены расширения команд, следующие дополнительные
поддерживаются формы команды FOR:

FOR / D% переменная IN (установлено) DO команда [команда-параметры]

If set contains wildcards, then specifies to match against directory  
names instead of file names.                                          

FOR / R [[диск:] путь]% переменная IN (установлено) DO команда [команда-параметры]

Walks the directory tree rooted at [drive:]path, executing the FOR    
statement in each directory of the tree.  If no directory             
specification is specified after /R then the current directory is     
assumed.  If set is just a single period (.) character then it        
will just enumerate the directory tree.                               

FOR / L% переменная IN (начало, шаг, конец) Команда DO [параметры команды]

The set is a sequence of numbers from start to end, by step amount.   
So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would   
generate the sequence (5 4 3 2 1)                                     
5 голосов
/ 08 июля 2013
@echo off
echo.
set /p num1=Enter Prelim:
echo.
set /p num2=Enter Midterm:
echo.
set /p num3=Enter Semi:
echo.
set /p num4=Enter Finals:
echo.
set /a ans=%num1%+%num2%+%num3%+%num4%
set /a avg=%ans%/4
ECHO %avg%
if %avg%>=`95` goto true
:true
echo The two numbers you entered were the same.
echo.
pause
exit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...