Как создать бесконечный цикл в пакетном файле Windows?



это в основном то, что я хочу в пакетном файле. Я хочу иметь возможность повторно запускать "делать вещи "всякий раз, когда я нажимаю любую клавишу, чтобы пройти мимо"паузы".



while(true){
Do Stuff
Pause
}


похоже, что есть только for петли доступны и нет while циклы в пакетном режиме. Как же тогда создать бесконечный цикл?

719   6  

6 ответов:

Как насчет использования хорошего(?) старый goto?

:loop

echo Ooops

goto loop

см. также этой для более полезного примера.

действительно бесконечный цикл, считая от 1 до 10 с шагом 0.
Вам нужно бесконечное или больше приращений, чтобы достичь 10.

for /L %%n in (1,0,10) do (
  echo do stuff
  rem ** can't be leaved with a goto (hangs)
  rem ** can't be stopped with exit /b (hangs)
  rem ** can be stopped with exit
  rem ** can be stopped with a syntax error
  call :stop
)

:stop
call :__stop 2>nul

:__stop
() creates a syntax error, quits the batch

Это может быть полезно, если вам нужен действительно бесконечный цикл, так как он намного быстрее, чем goto :loop версия, потому что цикл for-loop полностью кэшируется один раз при запуске.

неограниченный цикл в команда для использования в cmd windows:

FOR /L %N IN () DO @echo Oops

enter image description here

читать help GOTO

и

:again
do it
goto again

еще один лучший способ сделать это:

:LOOP
timeout /T 1 /NOBREAK 
::pause or sleep x seconds also valid
call myLabel
if not ErrorLevel 1 goto :LOOP

таким образом, вы можете позаботиться об ошибках тоже

вот пример использования цикла:

echo off
cls

:begin

set /P M=Input text to encode md5, press ENTER to exit: 
if %M%==%M1% goto end

echo.|set /p ="%M%" | openssl md5

set M1=%M%
Goto begin

Это простой пакет, который я использую, когда мне нужно зашифровать любое сообщение в хэш md5 в Windows(требуется openssl), и программа будет лояльно повторяться, за исключением Ctrl+C или пустого ввода.

Comments

    Ничего не найдено.