[loops] Windows 배치 파일에서 무한 루프를 만드는 방법은 무엇입니까?

이것은 기본적으로 배치 파일에서 원하는 것입니다. 아무 키나 눌러 “일시 정지”를 지날 때마다 “Do Stuff”를 다시 실행할 수 있기를 원합니다.

while(true){
    Do Stuff
    Pause
}

for사용 가능한 루프 만 while있고 배치에 루프가 없는 것 같습니다 . 무한 루프를 만들려면 어떻게해야합니까?



답변

good (?) old를 사용하는 것은 goto어떻습니까?

:loop

echo Ooops

goto loop

더 유용한 예 는 내용도 참조하십시오 .


답변

Windows 에서 사용하기위한 한 줄 명령의 무제한 루프 cmd:

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

여기에 이미지 설명을 입력하십시오


답변

0의 증분으로 1에서 10까지 계산되는 무한 루프
입니다. 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 :loopfor-loop는 시작할 때 완전히 한 번 캐시되므로 버전 보다 훨씬 빠르기 때문에 실제로 무한 루프가 필요한 경우 유용 할 수 있습니다 .


답변

읽다 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

이것은 Windows에서 md5 해시로 메시지를 암호화해야 할 때 사용하는 간단한 배치입니다 (openssl 필요) .Ctrl + C 또는 빈 입력을 제외하고 프로그램은 충성스럽게 반복됩니다.


답변