지금까지 추측하지 못했다면 배치 파일은 기본적인 유형의 프로그래밍 언어 역할을 할 수 있습니다. 현대 프로그래밍 언어가 제공하는 한 가지는 코드를 작은 조각으로 모듈화하여 한 조각을 변경하더라도 관련없는 일부 코드를 실수로 변경할 위험이 없도록하는 기능입니다. 큰 배치 파일을 작은 파일로 나누고 필요에 따라 개별 모듈을 호출하는 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에 적용됩니다.