윈도우 배치파일에는 While 문이 없기 때문에, 무한루프를 돌리려면 다른 방법을 생각해봐야 합니다.

막상 예를 들려니 적절한 예가 떠오르지 않는데... 일단 이해를 돕기 위해 간단한 예제를...

@echo off
:_loop
set /a a+=1
echo 지금은 %a%번째 루프입니다.

goto _loop

이놈을 CMD 파일로 저장해서 실행을 하면 계속해서 숫자가 1씩 증가하면서 반복이 되는데요...


일부러 창을 닫거나, Ctrl + C를 눌러서 중지시키지 않는 한은 계속해서 실행이 되겠죠.

이처럼 배치파일에서 무한루프를 돌리고 싶다면 레이블과 GOTO 구문을 활용하시면 되겠습니다. 레이블은 콜론 한개를 앞에 붙이고 아무 이름이나 적어주시면 됩니다.

실제로 무한루프를 돌릴 일은 거의 없을 테니, 좀 더 실용적으로 바꿔볼까요? 예를 들어 1만번 반복하면 그만두도록 만들어 보겠습니다.

@echo off
:_loop
set /a a+=1
echo 지금은 %a%번째 루프입니다.
if %a%==10000 goto _break
goto _loop
:_break
echo 루프가 끝났네요.
pause

이렇게 조건을 걸고 goto _loop 아래쪽에다 _break 레이블을 만들어서 그쪽으로 goto 하게 만들면 루프를 빠져나올 수 있겠죠. 일반적인 프로그래밍 언어에서는 간단히 break; 만 입력해줘도 되는데, 배치파일에선 저렇게 처리해줘야 break 효과를 낼 수 있습니다.

그러니까 레이블과 goto문을 적절히 활용하면 배치파일로도 꽤 쓸만한 작업을 할 수 있습니다.