소프트웨어 CMD 작성 때 goto 명령에 관한 질문입니다.
2011.05.13 16:47
보통 CMD 작성할 때 goto 명령을 이용하는데요, 아래와 같이 간단한 예를 보고 질문 드리겠습니다.
set menu=
:1
:2
:3
|
위와 같이 작성됐다면 메뉴에서 1번을 선택하면 ':1' 의 내용이 출력되고 2번을 선택하면 ':2' 의 내용이 출력되게 됩니다.
그런데 만약, 메뉴에서 1번을 선택하면 ':1' 의 내용과 ':2' 의 내용이 순서로 진행되고 2번을 선택하면 ':1' 의 내용과 ':2' 의 내용, 그리고 ':3' 의 내용이 순서대로 출력되는 이런 명령은 어떻게 구성할 수 있을까요?
즉, 진행해야 할 명령들을 그룹별로 나누고 메뉴를 선택할 때 나뉘어진 명령들의 그룹을 임의적으로 선택하여 순차적으로 실행되게 하는 명령이 궁금합니다.
적고 보니 제가 많이 혼란스러운데, 답변 주시는 분들께 제대로 설명이 됐는지 모르겠습니다.
goto 명령으로는 한계가 있는 작업이라 좀 더 편리한 명령을 이용하고픈 마음에 질문 올립니다.
댓글 [10]
-
카리스마조 2011.05.13 16:58 -
나끼 2011.05.13 17:04
카리스마조님// 답변 감사합니다.
그런데 한 가지 찜찜한 것이... :1 의 첫 번째, :2의 첫 번째... 이렇게 동일한 첫 번째 내용들이 각기 그룹에 중복으로 들어 가게 되는데... 중복 내용들로 인해 CMD 파일 자체가 너무 길어집니다. 원래 목표가 중복 내용 없이 작성하자! 이기 때문에 고민이 많이 됩니다.
좀 더 고민이 필요한 부분 같습니다.
-
minesoul 2011.05.13 17:17
음.. 제가 이해한게 맞는지 모르겠는데요...
call 명령어를 써보면 어떨까요?
@echo off
:main
set menu=
set /p menu=번호를 선택해주세요 :
if "%menu%" == "1" call :1 && call :2
if "%menu%" == "2" call :1 && call :2 && call :3
if "%menu%" == "3" call :3
if "%menu%" == "4" goto Exit
goto main:1
echo 1
goto :eof
:2
echo 2
goto :eof
:3
echo 3
goto :eof이거 실행 해보면 질문에 해당하는 내용은 적용되는듯 한데요...
call로 부른 후에는 goto :eof 로 닫아줘야 합니다. -
나끼 2011.05.13 17:26
minesoul님// 답변 감사합니다.
CALL 명령이 반드시 외부 CMD 파일만 호출해서 출력하고 다시 본 CMD 파일로 돌아 오는 게 아녔군요?
지금 작성 해보겠습니다.
그런데 마지막 goto :eof 는 어디로 향하는 것인가요? 기존 goto 명령만 사용할 때는 마지막 Exit 로 가게했는데 :eof 는 어딘지 모르겠습니다.
-
minesoul 2011.05.13 17:33
goto :eof 는 해당 레이블을 지정하지 않아도 해당 스크립트를 종료하는 명령어 입니다.
:exit
exit
로 해야 하는것을
goto :eof
만 입력하는 것과 똑같은 것입니다.
-
꿀꿀이 2011.05.13 17:39 -
카리스마조 2011.05.13 17:20 중복 내용 없이 하려면
:1
call A & call B
exit
:2
call A & call B & call C
exit
:A
첫번째 내용
exit /b
:B
두번째 내용
exit /b
:C
세번째 내용
exit /b
k.j의 소스보기에서 Scripts.cmd 열어보시면 원하는 기능 다 있습니다.
-
카리스마조 2011.05.13 17:21 minesoul 님이 올린것이 좀더 단순하군요
-
나끼 2011.05.13 17:28
카리스마조님// 답변 감사합니다.
제가 사용했던 goto 명령을 이용한 측면에서 확실히 이해가 되는 명령입니다. minesoul님// 명령은 가장 최적화 된 명령으로 보이고요.
-
카리스마조 2011.05.13 17:57 exit /b 와 goto :eof는 동일한 기능을 합니다.
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
23095 | 윈 도 우| 윈도우 트윅버전 써보신분들께 질문.. [12] | 라크 | 2181 | 05-13 |
23094 | 하드웨어| 시게이트 2테라 그린 구매했는데;; 하드 상태가 이거 정상... [4] | 만쓰별 | 1816 | 05-13 |
» | 소프트웨어| CMD 작성 때 goto 명령에 관한 질문입니다. [10] | 나끼 | 2113 | 05-13 |
23092 | 윈 도 우| 윈7과 xp 멀티 설치할때 하드 드라이브 문자에 관한 질문 [2] | 강종상 | 1502 | 05-13 |
23091 | 소프트웨어| wifi의 암호변경시 연결문제 [4] | 문용수 | 2244 | 05-13 |
23090 | 윈 도 우| 23940번 질문중 궁금증 풀어주세요? [6] | 샤넬 | 1246 | 05-13 |
23089 | 하드웨어| 랜케이블 관련 질문 입니다....... [6] | 우주선 | 1714 | 05-13 |
23088 | 윈 도 우| 카리스마조님께 정중히 질문 드립니다. [2] | 운상아짜 | 2228 | 05-13 |
23087 | 하드웨어| 그래픽카드 구입문제... [11] | 코윈 | 1663 | 05-13 |
23086 | 하드웨어| 문의)) 노트북 문의 드립니다!!!.....^^;; [2] | Chobits0914 | 1122 | 05-13 |
23085 | 서버 / IT| 계정 깨짐 질문 [1] | 김계란 | 2574 | 05-13 |
23084 | 윈 도 우| 계정 깨짐 질문 입니다. [3] | 김계란 | 2202 | 05-13 |
23083 | 윈 도 우| 인터넷에서 새 메시지창이 뜰시에 [4] | nabuka | 1570 | 05-13 |
23082 | 하드웨어| 노트북 사양에 대해 문의드립니다. [3] | 한스네 | 1234 | 05-13 |
23081 | 윈 도 우| 정품인증후.... [3] | Superbbbbb | 2849 | 05-13 |
23080 | 윈 도 우| 파이어폭스에서 한글파일 다운로드시 파일명 깨짐 [5] | 응가 | 6069 | 05-13 |
23079 | 소프트웨어| usb부팅 윈도우 남는 용량 [2] | 바르도퇴돌 | 1750 | 05-12 |
23078 | 소프트웨어| xp에서 토렌트 사용시 디스크 과부하 [3] | Armada | 2562 | 05-12 |
23077 | 서버 / IT| 서버2008 내부망 외부망 랜카드 2개로... [4] | 사빠빠 | 4420 | 05-12 |
23076 | 윈 도 우| chkdsk 실행시 파일이 위험 할 수도 있나요? [1] | 베킨세일 | 2842 | 05-12 |
원하는 기능을 그룹으로 만들면 됩니다.
:1
첫번째 내용
pause
두번재 내용
pause
goto end
:2
첫번째 내용
pause
두번째 내용
pause
세번째 내용
pause
goto end
:end
exit
하나씩 실행하려면 pause 를 사용하고 연속으로 실행하려면 pause 필요없습니다.