윈도우 배치파일에는 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문을 적절히 활용하면 배치파일로도 꽤 쓸만한 작업을 할 수 있습니다.
신고
Share
  1. BlogIcon andu
    2011.12.21 02:24 신고

    아무래도 배치의 중후반은 for을 알고부터가....

  2. 이정환
    2011.12.21 06:27 신고

    스누피님..항상 좋은정보 감사드려요....
    혹시 특정IP 몇개를 동시에 ping을 날리는 배치파일을 만들수 있나요?
    방법 좀 알려주세요 ㅠ.ㅠ
    제가 회사에서 매일 특정 IP로 ping을 날리는데 귀찮아서요 cmd 치고
    ping xxx.xxx.xxx.xxx 치는게 번거러워서요~

    • BlogIcon snpbox
      2011.12.21 23:39 신고
      수정 및 삭제

      특정 IP 갯수가 몇개 안되면 수동으로 적어주시면 되구요, 핑을 반복해서 계속 쏘시는거면 -t 옵션 붙이면 되니까

      @echo off
      start ping -t 192.168.1.1
      start ping -t 192.168.1.2
      start ping -t 192.168.1.3
      start ping -t 192.168.1.4
      start ping -t 192.168.1.5
      exit

      이런 식으로 CMD파일 만드시면 창이 5개 뜨면서 핑을 반복해서 쏘게 됩니다.

      다른 방식을 원하신다면 댓글 달아주세요.

    • 용한
      2011.12.22 13:41 신고
      수정 및 삭제

      구지 배치파일로 하시겠다면 모르지만..
      netscan, ip scanner 같은 여러 호스트에 Ping 쏘는 프로그램이 있습니다.
      제가 주로 쓰는건데 무료 입니다.
      http://www.radmin.co.kr/download/utilities.php

  3. 신용한
    2011.12.21 08:42 신고

    PowerShell 이란것도 있던데 개발자나 시스템 운영자에게 유용하다고 들었네요. ㅎㅎ 전 관심이 없어서.


  4. 2011.12.21 16:33

    비밀댓글입니다

  5. GreeeeeN+
    2011.12.21 20:29 신고

    스누피님 좋은 정보 늘 감사드립니다. 간단히 질문 하나만 드릴게요 ^^:
    제가 이번에 메인보드 교체 (CPU랑 램까지) 하드는 그대로 쓰려고 하는데
    시스템 바뀌면 윈도우7을 쓰는데 재설치를 해야 한다고 해서 그런데
    예전에 포스팅 하신 윈도우7 하드에서 설치하기 방식대로 설치가 가능할까요?

    시스템 바꾼 다음에 그냥 부팅하면 블루스크린 뜨거나 다른 에러로 기존 설치된
    윈도우로는 진입 안될 가능성이 높다고 하던데 D:\에 설치파일들 옮겨놓고
    첨부하신 cmd 시킨 뒤 시스템 종료하고, 메인보드 교체 후 파워 넣으면
    윈도우 설치로 잘 진입할지 궁금합니다 !

    • BlogIcon snpbox
      2011.12.21 23:50 신고
      수정 및 삭제

      글쎄요... 테스트는 해보지 않았지만, 가능할 것 같기는 합니다. 그런데 웬만하면 USB나 외장하드 설치본 하나 반들어 두시죠 ^^;;

  6. 이정환
    2011.12.22 22:51 신고

    스누피님 정말 정말 감사합니다 ㅠ.ㅠ

  7. BlogIcon Upper Design™
    2012.02.22 17:45 신고

    @echo off

    :_set
    set /p a=도배 할 글 입력:
    set /p b=횟수:
    goto _loop

    :_loop
    set /a c+=1
    echo %a%
    echo 지금은 %c%번째 루프입니다.
    if %c%==%b% goto_break
    goto _loop

    :_break
    echo 루프가 끝났습니다.
    pause


    전 이런식으로 응용해보았어요 ㅎ


  8. 2015.04.30 11:17

    비밀댓글입니다