Как выполнить цикл определенное число раз в bat файле
- Recluse
- 06.05.2021
- 29 646
- 2
- 38
- 38
- 0
В одном из материалов ранее, мы рассматривали зацикливание выполнения команд в bat скрипте. Однако, что делать, если вам нужно выполнить цикл команд только определенное количество раз? Это достигается с помощью использования дополнительной переменной, которая с каждым проходом цикла будет увеличивать свое значение на единицу, и в случае превышения нужного значения произойдет остановка цикла.
В примерах ниже, мы будем повторять цикл 8 раз, после чего произойдет завершение bat скрипта. В процессе выполнения любого из скриптов ниже, будет поочередно запущено 8 раз приложение Блокнот (Notepad).
Способ 1 - использование команды FOR
Самым правильным способом будет использованием команды для цикличной обработки - FOR. С помощью ключа /L можно задать условия в виде начального значения, шага увеличения и значение, когда выполнение команды будет завершено.
for /l %%x in (1, 1, 8) do (
notepad.exe
)
pause
exit
Способ 2 - использование переменной
Еще один способ - это установить значение переменной (в нашем случае - COUNTER) равное единице, после чего увеличивать текущее значение этой переменной на единицу. Так же, следует поставить условие, что когда значение переменной достигнет 9, то следует перейти к метке end, которая в нашем случае содержит команду завершения работы. Выглядеть все это будет следующим образом:
set COUNTER=1
goto loop
:loop
if %COUNTER%==9 goto end
set /A COUNTER=COUNTER+1
notepad.exe
goto loop
:end
pause
exit
Способ 3 - использование переменной
Другой вариант предыдущего скрипта, который содержит ручную смену значения переменной на нужное значение после каждого выполнения цикла.
set COUNTER=1
goto loop
:loop
if %COUNTER%==9 goto end
if %COUNTER%==8 set COUNTER=9
if %COUNTER%==7 set COUNTER=8
if %COUNTER%==6 set COUNTER=7
if %COUNTER%==5 set COUNTER=6
if %COUNTER%==4 set COUNTER=5
if %COUNTER%==3 set COUNTER=4
if %COUNTER%==2 set COUNTER=3
if %COUNTER%==1 set COUNTER=2
notepad.exe
goto loop
:end
pause
exit
Добавить комментарий