아이디어는 매개 변수 목록을 반복하고 -l이 발견되면 다음 매개 변수를 추출하는 다른 섹션을 호출합니다.
SHIFT는 사용 가능한 매개 변수 목록에서 첫 번째 매개 변수를 제거합니다. 예 :
당신이 실행 한 경우 : sampl.exe -s ssss는 -m MMMM -l 경로 -k KKKK -d DDDD
사용할 수있는 매개 변수 = -s ssss는 -m MMMM -l 경로가 될 것 -k KKKK -d DDDD \
스크립트에서 당신은 SHIFT, 다음 사용 가능한 매개 변수가 될 것를 실행하는 경우 = ssss는 -m 으음 -l 경로 -k KKKK -d DDDD
아래의 코드 예제를 참조하십시오 :
@ECHO OFF
SET path=
SET mmm=
SET sss=
SET ddd=
REM Loop through passed parameters
:LOOP
IF [%1]==[] GOTO LOOP_END
IF [%1]==[-s] @CALL :PROCESS_S %2
IF [%1]==[-m] @CALL :PROCESS_M %2
IF [%1]==[-l] @CALL :PROCESS_L %2
IF [%1]==[-d] @CALL :PROCESS_D %2
SHIFT
GOTO LOOP
:LOOP_END
REM call your actual end result here.. Once the batch file gets here, the variable path would have been set if there was a -l <my path> passed, otherwise it would be empty
cd %path%
runmyprogram.exe %sss% %mmm% %ddd%
GOTO:EOF
REM Define your methods down here.
:PROCESS_S
IF [%1]==[] GOTO:EOF
SET sss=%1
SHIFT
GOTO:EOF
:PROCESS_M
IF [%1]==[] GOTO:EOF
SET mmm=%1
SHIFT
GOTO:EOF
:PROCESS_L
IF [%1]==[] GOTO:EOF
SET path=%1
SHIFT
GOTO:EOF
:PROCESS_D
IF [%1]==[] GOTO:EOF
SET ddd=%1
SHIFT
GOTO:EOF
을
이 다른 매개 변수는 항상 존재합니까? 예를 들어, -l? – Marc
아니요. 확실하지 않습니다 .. 전달 될 수도 있고 안되기도합니다 ... – Ganesh
이것은 귀하의 질문에 직접 대답하지 않지만 도움이 될 것이라고 생각합니다. http://stackoverflow.com/a/8162578/1012053 – dbenham