Как выполнить цикл определенное число раз в bat файле

  • 06.05.2021
  • 29 886
  • 2
  • 39
  • 39
  • 0
Как выполнить цикл определенное число раз в bat файле

В одном из материалов ранее, мы рассматривали зацикливание выполнения команд в 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
Была ли эта статья Вам полезна?

Комментарии к статье (2)

    • Дмитрий

    Спасибо за материал! Решил свой вопрос, мне помог способ №3. Спасибо большое!!!!

    • lp85d

    А это в том случае если необходимо задать количество циклов

    set COUNTER=1
    :loop
    if %COUNTER%==4 goto end
    set /A COUNTER=COUNTER+1
    timeout /t 3
    @echo off
    ping 1.1.1.1
    if %errorlevel%==0 (
    echo conect
    ) else (
    netsh interface ip set address "Беспроводное сетевое соединение" static 192.168.0.101 255.255.255.0 192.168.0.1 1
    netsh interface ip set dns "Беспроводное сетевое соединение" static 100.126.255.254 primary
    netsh interface ip add dns "Беспроводное сетевое соединение" 100.126.255.253 index=2
    timeout 3
    )
    goto loop
    :end
    exit

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.