배치파일에서 무한루프 돌리기
2011. 12. 21. 00:10 |
윈도우 일반
윈도우 배치파일에는 While 문이 없기 때문에, 무한루프를 돌리려면 다른 방법을 생각해봐야 합니다.
막상 예를 들려니 적절한 예가 떠오르지 않는데... 일단 이해를 돕기 위해 간단한 예제를...
이놈을 CMD 파일로 저장해서 실행을 하면 계속해서 숫자가 1씩 증가하면서 반복이 되는데요...
일부러 창을 닫거나, Ctrl + C를 눌러서 중지시키지 않는 한은 계속해서 실행이 되겠죠.
이처럼 배치파일에서 무한루프를 돌리고 싶다면 레이블과 GOTO 구문을 활용하시면 되겠습니다. 레이블은 콜론 한개를 앞에 붙이고 아무 이름이나 적어주시면 됩니다.
실제로 무한루프를 돌릴 일은 거의 없을 테니, 좀 더 실용적으로 바꿔볼까요? 예를 들어 1만번 반복하면 그만두도록 만들어 보겠습니다.
이렇게 조건을 걸고 goto _loop 아래쪽에다 _break 레이블을 만들어서 그쪽으로 goto 하게 만들면 루프를 빠져나올 수 있겠죠. 일반적인 프로그래밍 언어에서는 간단히 break; 만 입력해줘도 되는데, 배치파일에선 저렇게 처리해줘야 break 효과를 낼 수 있습니다.
그러니까 레이블과 goto문을 적절히 활용하면 배치파일로도 꽤 쓸만한 작업을 할 수 있습니다.
막상 예를 들려니 적절한 예가 떠오르지 않는데... 일단 이해를 돕기 위해 간단한 예제를...
@echo off
:_loop
set /a a+=1
echo 지금은 %a%번째 루프입니다.
goto _loop
:_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
:_loop
set /a a+=1
echo 지금은 %a%번째 루프입니다.
if %a%==10000 goto _break
goto _loop
:_break
echo 루프가 끝났네요.
pause
이렇게 조건을 걸고 goto _loop 아래쪽에다 _break 레이블을 만들어서 그쪽으로 goto 하게 만들면 루프를 빠져나올 수 있겠죠. 일반적인 프로그래밍 언어에서는 간단히 break; 만 입력해줘도 되는데, 배치파일에선 저렇게 처리해줘야 break 효과를 낼 수 있습니다.
그러니까 레이블과 goto문을 적절히 활용하면 배치파일로도 꽤 쓸만한 작업을 할 수 있습니다.
'윈도우 일반' 카테고리의 다른 글
윈도우 netsh 명령어로 MTU 값 변경하기 (14) | 2012.01.18 |
---|---|
윈도우에서 특정 프로세스 강제 종료하는 방법 (22) | 2012.01.16 |
윈도우 방화벽에서 특정 IP만 허용하기 (15) | 2011.12.30 |
관리자가 아닌 일반 사용자 계정에 서비스 제어권한을 부여하는 방법 (7) | 2011.12.22 |
윈도우 암호로 보호된 공유 끄기가 안되는 경우 (17) | 2011.12.19 |
다수의 파일에서 특정 문자열 찾기 (10) | 2011.11.27 |
IIS FTP 가상 디렉터리 추가시 보이지 않는 문제 (11) | 2011.11.16 |
윈도우 업데이트 및 서비스팩 설치 실패한 경우 (15) | 2011.08.07 |
최근에 달린 댓글 최근에 달린 댓글