소프트웨어 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 | - | - |
13790 | 소프트웨어| 카카오톡 이미지 삽입하는것 | hskdl | 2097 | 09-17 |
13789 | 소프트웨어| usb 해지할 때 명령어를 집어넣을 방법이 어떤게 있을가요? [4] | AirPocket | 2097 | 11-29 |
» | 소프트웨어| CMD 작성 때 goto 명령에 관한 질문입니다. [10] | 나끼 | 2096 | 05-13 |
13787 | 소프트웨어| Volume License Service Center (VLSC) [2] | 통나무 | 2096 | 12-06 |
13786 | 소프트웨어| 노턴 안티바이러스 사용하시는 분 질문 좀요. [5] | 버게시 | 2095 | 02-17 |
13785 | 소프트웨어| 120프레임 동영상도 있나요? [2] | 꿈과하늘 | 2095 | 03-17 |
13784 | 소프트웨어| 두개의 문서간에 달라진점 찾는 유틸 ? [4] | 김무 | 2095 | 11-07 |
13783 | 소프트웨어| 간편한 DVD굽는 프로그램 추천좀해주세요. [8] | 클레멘타인 | 2095 | 11-25 |
13782 | 소프트웨어| firefox 6.0.2 버전 버그인가요? [4] | 천사와의데 | 2094 | 09-07 |
13781 | 소프트웨어| 결국 이 오류문제는 포기해야하는건가요? [5] | Heaven4u | 2093 | 01-13 |
13780 | 소프트웨어| svchost.exe가 다른컴퓨터로부터.. [4] | bono19 | 2093 | 02-01 |
13779 | 소프트웨어| 윈도우 64비트용으로 사용가능한 HP 프린터 드라이버 | 라스트맨 | 2093 | 07-13 |
13778 | 소프트웨어| 하드가 모자라서 약간 업그래이드를 하려는데요... [2] | b1115 | 2093 | 08-13 |
13777 | 소프트웨어| 팀뷰어 오류 관련 질문 [2] | 고스트ghost | 2093 | 10-13 |
13776 | 소프트웨어| Vm8.0에서 게스트 시스템이 이유 없이 느려졌어요.. [5] | 윤발이 | 2092 | 02-03 |
13775 | 소프트웨어| arcsoft TotalMedia Theatre 5 에서 자막 크기 키... [2] | 귀신 | 2092 | 09-11 |
13774 | 소프트웨어| 이미지 해상도 짝퉁 구별하는 프로그램 혹시 있을까요? [4] | 윈도면도 | 2092 | 01-19 |
13773 | 소프트웨어| dxva 적용하는게, 소비전력, 발열 측면에서 이득인가요? [5] | 연세대약대 | 2092 | 05-25 |
13772 | 소프트웨어| 포터블 VirtualBox 사용법 문의 [1] | 스위스 | 2091 | 01-18 |
13771 | 소프트웨어| 증분백업과 차분백업의 차이 [4] | 메리아 | 2091 | 05-07 |
원하는 기능을 그룹으로 만들면 됩니다.
:1
첫번째 내용
pause
두번재 내용
pause
goto end
:2
첫번째 내용
pause
두번째 내용
pause
세번째 내용
pause
goto end
:end
exit
하나씩 실행하려면 pause 를 사용하고 연속으로 실행하려면 pause 필요없습니다.