노무현 대통령 배너
BLOG main image
왕미친놈의 왕미친세상입니다. 미친 소리는 써도 되지만, 근거 없는 소리는 쓰면 안 됩니다.

GOTO 명령은 여러 프로그래밍 언어에서 실행 순서를 바꾸어주는 역할을 한다. 그러나 구조적 프로그래밍과 관련하여 지탄을 받는 대상이기도 하다. 한편 도스용 배치파일에서는 배치파일에서 루프(loop) 구현 등 여러 가지 상황과 맞물려 반드시 필요한 기능 가운데 하나였다.

윈도XP의 배치파일에서는 GOTO 명령의 쓰임이 예전보다 줄었으나 아직까지도 여전히 자주 쓰이고 있다. 특히 하위 버전과의 호환성이라는 측면에서 매우 중요한 역할을 하고 있다.

말뜻

GOTO는 배치파일 내부에서 지정하는 대상(레이블)이 있는 곳으로 가라는 뜻을 가지고 있다. 그러므로 이 명령어를 발견하면 뒤따르는 레이블이 위치하는 곳으로 옮겨가면 된다.

GOTO 기본 문법

GOTO 명령의 기본 문법은 매우 간단하다.

GOTO Label

레이블은 여러 가지가 있으며, GOTO 명령과 함께 쓰이는 것을 GOTO레이블이라고 부른다.

GOTO 명령을 GOTO레이블과 함께 표현하면 아래와 같다.

Command_1
Goto :Label_1
Command_2
:Label_1
Command_3
Goto Label_2
Command_4
:Label_2
Command_5

이때 2행에 있는 Goto :Label_1 에서는 레이블 앞에 쌍점(콜론)이 붙었으나, 6행에 있는 Goto Label_2 에서는 레이블 앞에 쌍점이 붙지 않았다. 이처럼 GOTO Label의 형태에서 레이블 앞에는 쌍점을 붙여도 되고, 붙이지 않아도 된다. 명령어와 혼동되지 않도록 쌍점을 붙이는 편이 낫다고 생각한다. 그러나 일반적으로 위와 같이 쓰이는 일은 거의 없고, 대부분 IF 문과 함께 쓰이게 된다.

이때 GOTO 레이블은 8글자를 넘기면, 그 넘어가는 부분은 무시하게 된다. 다시 말해 아래의 레이블은 모두 같은 의미―:a1234567―를 갖게 된다.

  1. :a1234567
  2. :a12345678
  3. :a12345679
  4. :a1234567a
  5. :a1234567b

한편 GOTO문에서 지정한 레이블이 존재하지 않으면, 레이블을 찾을 수 없다는 메시지를 내보내고 배치파일을 종료하게 된다.

다만 윈도XP 명령확장에서 사용하는 :EOF 레이블은 배치파일 내부에서 정의하지 않아도 동작하며, 그 경우 곧바로 오류 메시지를 보이지 않고 배치파일을 종료한다. 이 :EOF 레이블을 사용하려면 반드시 goto :EOF라고 써야 하며, goto EOF라고 콜론을 빠뜨리고 쓰면 동작하지 않는다.

참고 자료

다음 예고

FOR 명령

이 글은 스프링노트에서 작성되었습니다.


'스크립트 > 배치파일' 카테고리의 다른 글

FOR 명령 확장 1  (2) 2009.06.17
FOR 명령  (6) 2009.05.16
GOTO 명령  (3) 2009.05.05
IF 명령 확장  (1) 2009.04.22
IF 문자열  (4) 2009.04.18
IF EXIST  (0) 2009.04.15
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

댓글을 달아주세요:: 왕미친놈 욕은 해도 되지만, 근거없는 소리는 쓰지 말아 주세요.
BBCode 사용할 수 있습니다.

  1. 2009.05.06 21:05
    새 글 발행입니당...^^...토끼가 무는거 한 번 보세요~...>_<...
  2. 진만고양이
    2010.04.09 19:35
    GOTO 레이블은 8글자를 넘기면, 그 넘어가는 부분은 무시

    이것은 ms-dos 만 해당되나요???


    윈도우 XP-pro 에서는 8자 넘어도 인식이 됩니다.
    ^^

    감사합니다.~!


카테고리

분류 전체보기 (1005)
스크립트 (22)
벌레와 팁 (126)
소프트웨어 (240)
하드웨어 (6)
이야기 (24)
말의 나무 (506)
미쳐보자 (22)
일기 (48)
아이폰 (10)

달력

«   2019/11   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30