배치 파일 사용, 파트 4 : CALL 문
지금까지 추측하지 못했다면 배치 파일은 기본적인 유형의 프로그래밍 언어 역할을 할 수 있습니다. 현대 프로그래밍 언어가 제공하는 한 가지는 코드를 작은 조각으로 모듈화하여 한 조각을 변경하더라도 관련없는 일부 코드를 실수로 변경할 위험이 없도록하는 기능입니다. 큰 배치 파일을 작은 파일로 나누고 필요에 따라 개별 모듈을 호출하는 CALL 문을 사용하여 모듈화 할 수 있습니다.
사용자가 여러 기능을 호출 할 수있는 메뉴 시스템이있는 경우를 살펴 보겠습니다. 우리가 할 일은 각각의 함수를 자신의 배치 파일에 넣고 메인 메뉴 배치 파일의 CALL 문을 사용하여 선택한 함수를 호출 한 다음 사용자가 다른 함수를 선택할 수 있도록 메뉴로 돌아가는 것입니다.
Menu.bat는 다음과 같습니다.
@ECHO OFF :TOP CLS ECHO Welcome to the Main Menu! Here are your choices... ECHO. ECHO A) Perform Function A B) Perform Function B ECHO C) Perform Function C D) Perform Function D ECHO. ECHO Q) Quit ECHO. CHOICE /C ABCDQ GOTO %ERRORLEVEL% :5 GOTO :EOF :4 CALL FuncD.bat GOTO TOP :3 CALL FuncC.bat GOTO TOP :2 CALL FuncB.bat GOTO TOP :1 CALL FuncA.bat GOTO TOP
그리고 다음은 FuncA.bat의 모습입니다.
ECHO This is Function A PAUSE
여기서 흥미로운 일은 없지만 명령 기반 메뉴 시스템을위한 괜찮은 프레임 워크의 시작입니다. 그리고 주목해야 할 몇 가지 항목이 있습니다. 위에서 아래로 작업하면서 처음 접하는 새로운 명령은 CLS 명령입니다. 이 간단한 명령은 화면을 지워서 메뉴가 항상 자체적으로보기 좋게 표시되도록합니다. 분별력있는 눈은 마침표가 바로 뒤 따르는 일부 ECHO 진술도 알아 차릴 것입니다. 이것이 빈 줄을 출력하는 방법입니다. 또 다른 새로운 항목은 내장 : EOF 라벨입니다. 이렇게하면 파일의 마지막 줄로 존재하는 고유 한 레이블을 선언 할 필요가 없습니다 (예 : 다른 팁에서 사용 된 “: Done”레이블).
그러면 CALL 문으로 이동합니다. CALL로 지정된 매개 변수는 다음에 호출 될 배치 파일의 이름입니다. 예를 들어, 사용자가 메뉴에서 옵션 A를 선택하면 배치 파일이 즉시 : 1 레이블로 이동하여 FuncA.bat가 다음에 호출됩니다. 내 FuncA.bat 파일은 단순히 한 줄을 에코하고 PAUSE를 수행합니다. PAUSE 문은 “계속하려면 아무 키나 누르십시오…”라는 행이 출력되도록합니다. 그런 다음 사용자가 키를 누를 때까지 배치 파일의 실행을 일시 중단합니다. 키를 누르면 배치 파일이 진행됩니다.이 경우 FuncA.bat가 종료되고 제어가 FuncA.bat에 대한 호출 바로 다음 줄의 주 메뉴 배치 파일에서 다시 시작됩니다. 그래서 다음에 일어날 일은 모든 것을 다시 시작하는 GOTO TOP이 될 것입니다.
FuncA.bat가 호출 될 때 ECHO 상태가 유지되므로 FuncA.bat의 맨 위에 “@ECHO OFF”를 추가 할 필요가 없습니다.
이 팁 (13187)은 Windows 7, 8 및 10에 적용됩니다.