소프트웨어 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 | - | - |
1318 | 소프트웨어| 인터레이스 비디오? 디인터레이싱? [3] | 한냐⌒ | 2392 | 05-17 |
1317 | 소프트웨어| win2000 oem판에서 질문입니다. [1] | seafull | 1085 | 05-17 |
1316 | 소프트웨어| 인터넷 강의 도움 프로그램을 찾고 있습니다 [3] | 공피 | 1793 | 05-17 |
1315 | 소프트웨어| Creative SB Audigy 2 [2] | Streamer | 1840 | 05-17 |
1314 | 소프트웨어| 음악(앨범)을 다운햇는데 파일한개짜리네요.. [4] | 코나 | 1564 | 05-17 |
1313 | 소프트웨어| VMWARE 윈7울티메이트 깔아보신분 계시나요? [2] | 키샤 | 1507 | 05-16 |
1312 | 소프트웨어| 백신추천부탁드려요 [7] | 공병희 | 2200 | 05-16 |
1311 | 소프트웨어| 이엠텍 ESTAR EX770 AM3 고야2 쓰고 계신분들^^ | 바르도퇴돌 | 1571 | 05-16 |
1310 | 소프트웨어| 하드디스크를 완벽히 복사하는 방법? [6] | 티티오 | 2312 | 05-16 |
1309 | 소프트웨어| IE9 검색창 및 아이콘들 크기 조절방법에 대해.. [2] | 가브리엘777 | 2334 | 05-16 |
1308 | 소프트웨어| win32 예외가 EXCEL.EXE [6028]에서 발생..오류에 대하여 ... | 넘추워 | 1832 | 05-16 |
1307 | 소프트웨어| 음악사이트 가입이 안되는데 혹시 아시는 분 계신가요? [2] | 담울 | 1407 | 05-16 |
1306 | 소프트웨어| CrystalDiskInfo 사용시 디스크 없음...뜹니다. [9] | nanari | 3086 | 05-15 |
1305 | 소프트웨어| bcdw질문 드립니다. 인스톨방법 [1] | 인사이더 | 1768 | 05-15 |
1304 | 소프트웨어| 플래시 10.3 정식 업데이트후 IE9 오류현상 [5] | 석이없음 | 3116 | 05-15 |
1303 | 소프트웨어| aimp3 질문입니다. [2] | 눈팅다껌 | 2045 | 05-15 |
1302 | 소프트웨어| 그레이웨어 제거 프로그램 없나요? [1] | Comma[COMA | 2207 | 05-15 |
1301 | 소프트웨어| 플래시 전체화면 | Comma[COMA | 2138 | 05-15 |
1300 | 소프트웨어| 자녀 컴퓨터 관리 프로그램 [5] | 공피 | 2460 | 05-15 |
1299 | 소프트웨어| 파일삭제후 하드용량이 줄지않을때 쓰는 프로그램 추천바랍... | 新感激時代 | 1787 | 05-15 |
원하는 기능을 그룹으로 만들면 됩니다.
:1
첫번째 내용
pause
두번재 내용
pause
goto end
:2
첫번째 내용
pause
두번째 내용
pause
세번째 내용
pause
goto end
:end
exit
하나씩 실행하려면 pause 를 사용하고 연속으로 실행하려면 pause 필요없습니다.