이것은 기본적으로 배치 파일에서 원하는 것입니다. 아무 키나 눌러 “일시 정지”를 지날 때마다 “Do Stuff”를 다시 실행할 수 있기를 원합니다.
while(true){
Do Stuff
Pause
}
for
사용 가능한 루프 만 while
있고 배치에 루프가 없는 것 같습니다 . 무한 루프를 만들려면 어떻게해야합니까?
답변
답변
답변
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 :loop
for-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 또는 빈 입력을 제외하고 프로그램은 충성스럽게 반복됩니다.