이 팁은 배치 파일 사용에 대한 시리즈를 계속합니다. 우리가 중단 한 부분을 다시 시작할 수 있도록 이전 팁을 (재) 방문하는 것이 좋습니다. 지금까지 DIR, REM, ECHO, FIND, TIME 및 TIMEOUT 명령을 다루었습니다. 또한 다음 연산자를 사용했습니다 : 파일로 출력 (>), 설명 (: :), 에코 없음 (@), 파이프 (|) 및 연결 (&).

마지막으로 % 1, % 2, % 3 등의 조합을 통해 배치 파일에 전달 된 매개 변수를 사용한다는 것을 알고 있습니다.

이 팁은 배치 파일에서 조건부 처리를 수행하는 것과 관련된 명령에 중점을 둡니다. 여기에는 IF, CHOICE, GOTO 및 “: label”의 특수 구문이 포함됩니다.

Do.bat라는 매우 편리한 배치 파일이 있습니다. 이러한 프로그램이있는 위치에 관계없이 프로그램을 실행하는 것은 “래퍼”에 불과합니다.

예를 들어 Prog1.exe라는 프로그램을 실행하려면

C:\Bat> DO Prog1

Prog2.exe를 실행하려면

C:\Bat> DO Prog2

Do.bat의 장점은 만들 때 작업 할 모든 프로그램의 위치를 ​​입력했다는 것입니다. 예를 들어 Prog1.exe가 “C : \ Programs \ My Programs \ Prog1.exe”에 있고 Prog2.exe가 “D : \ Utilities \ Barry \ Prog2.exe”에 있다는 것을 기억할 필요가 없습니다. . 또한 긴 경로 이름을 다시 입력 할 필요가 없습니다.

내 Do.bat 파일은 다음과 같습니다.

@ECHO OFF GOTO %1 :Prog1 "C:\Programs\My Programs\Prog1.exe"

GOTO Done

:Prog2 "D:\Utilities\Barry\Prog2.exe"

GOTO Done :Done

파일의 첫 번째 줄은 다른 줄이 표시되지 않도록합니다. 그 다음에는 제어가 전송 될 레이블의 이름을 매개 변수로 사용하는 GOTO 행이 나옵니다. 그리고이 레이블은 시작하기 위해 Do.bat에 전달 된 매개 변수이기도합니다. 따라서 Do.bat를 호출하고 “Prog1″을 매개 변수로 전달하면 .bat 파일은 “: Prog1″이라는 레이블로 GOTO를 수행합니다 (대소 문자를 구분하지 않음). 실행은 위에서 아래로 순차적으로 수행되므로 실행할 다음 명령은 Prog1.exe를 호출하는 명령입니다. 이 프로그램이 완료되면 “GOTO Done”명령을 실행하여 .bat 파일이 계속됩니다. “: Done”레이블은 파일의 마지막 줄이므로이 지점에 도달하면 .bat 파일이 종료됩니다. (EXIT 명령이 있지만이 명령을 실행하면 .bat 파일뿐만 아니라 전체 CMD 세션도 종료됩니다. 이는 아마도 원하는 작업이 아닐 것입니다.)

또는 CHOICE 명령을 사용하고 실행할 프로그램을 선택할 수있는 간단한 메뉴를 만들 수 있습니다. 이 경우 다음과 같은 Choice.bat 파일을 만들 수 있습니다.

@ECHO OFF ECHO Select 1 to run Prog1 ECHO Select 2 to run Prog2 ECHO Select Q to quit CHOICE /C 12Q /T 10 /D Q GOTO %ERRORLEVEL% :3 ECHO Quitting GOTO Done :2 "D:\Utilities\Barry\Prog2.exe"

GOTO Done :1 "C:\Programs\My Programs\Prog1.exe"

GOTO Done :Done

CHOICE 명령은 사용자에게 1, 2 또는 Q를 입력하라는 프롬프트를 제공합니다 (기본적으로 대소 문자를 구분하지 않음). 다른 문자는 무시됩니다. / T 스위치는 Q 옵션이 선택된 것처럼 프로 시저가 10 초 안에 시간 초과되도록 지시합니다 (/ D Q는 기본 옵션이 Q임을 나타냄). CHOICE 명령이 실행 된 후 % ERRORLEVEL % 변수는 선택한 옵션의 서수 값으로 설정됩니다. 따라서 사용자가 1을 선택한 경우 % ERRORLEVEL %은 1로 설정됩니다. 사용자가 2를 선택한 경우 % ERRORLEVEL %는 2로 설정됩니다. 사용자가 Q를 선택한 경우 % ERRORLEVEL %는 3으로 설정됩니다. 그런 다음 % ERRORLEVEL %로 표시된 레이블로 이동하여 요청 된 작업을 수행합니다.

IF 명령에 대한 전체 팁을 작성할 수 있지만 기본은 다음과 같은 작업을 수행하는 것입니다.

IF arg1 operator arg2 command

여기서 ‘arg1’및 ‘arg2’는 테스트중인 인수이고 ‘operator’는 EQU, NEQ, LSS, LEQ, GTR, GEQ (예 : EQUal, Not Equal, LeSS than 등) 중 하나이며 ‘command’는 명령 줄 명령.

P1을 에코하는 간단한 배치 파일은 다음과 같습니다.

@ECHO OFF IF [%1] EQU [] ECHO No Parameter passed IF [%1] NEQ [] ECHO Parameter P1 is '%1' GOTO:eof

(나는 특정 합병증을 피하기 위해 내 주장에 []를 사용하는 습관을 들였다.)

IF의 다른 맛도 있습니다. 예를 들어, 오류 수준을 테스트하고 파일이 있는지 테스트하고 ELSE 문을 포함 할 수 있습니다.

명령 줄에서 IF /? 그리고 당신이 할 수있는 모든 것에 대한 좋은 아이디어를 얻게 될 것입니다.

이 팁 (13185)은 Windows 7, 8 및 10에 적용됩니다.