2011-02-02 5 views
15

배치 파일에 여러 매개 변수를 다른 응용 프로그램에 전달하고 싶습니다.여러 매개 변수를 일괄 적으로 전달하는 방법은 무엇입니까?

지금 나는 그것을

app.exe %1 %2 

할 수 있으며 두 개의 매개 변수를 전달할 수 있습니다, 그러나 나는 (I 오히려 % 1 % 2 %를 기록 할 것 배치에 전달되는 모든 매개 변수를 전달하려는 3 % 4 ...)

마술 방법이 있습니까?

답변

35

마법의 방법이 있습니다! 나는 그것을 알았지 만 나는 그것을 기억할 수 없었다.

%*

3

당신은 인수를 통해 SHIFT 신속하고 루프를 사용할 수 있습니다. 다음은 최종 ECHO 프롬프트를 응용 프로그램을로드하라는 프롬프트로 대체하는 예제입니다.

@ECHO OFF 

SET PARAMS= 

:_PARAMS_LOOP 

REM There is a trailing space in the next line; it is there for formatting. 
SET PARAMS=%PARAMS%%1 
ECHO %1 
SHIFT 

IF NOT "%1"=="" GOTO _PARAMS_LOOP 

ECHO %PARAMS% 

PAUSE 

동적 매개 변수 계산이 필요하거나 특정 매개 변수를 허용하지 않으려는 경우에 유용 할 수 있습니다.

+0

하나가, 단지 내가 전에 * 빈 매개 변수의 체크 표시를 * 매개 변수를 처리하는 것입니다. –

3

또 다른 방법은 하나의 큰 따옴표 붙은 매개 변수를 사용하는 것입니다. 다른 응용 프로그램을 호출 할 때는 명령 줄에서 %~N 장치를 사용하여 따옴표를 제거하면됩니다.

응용 프로그램에 전달하려는 일부 매개 변수가 큰 따옴표로 묶인 경우 해당 따옴표는 두 번 반복해야합니다. 다른 경우에 스크립트를 호출

@ECHO OFF 
CALL %1 %~2 
여기

있는 예 (패스 : 여기

응용 프로그램의 이름과 제 파라미터와 함께 파라미터리스트로서 상기 제를 사용하는 도면 스크립트 프로그램에 전달할있어 하나의 매개 변수 또는 여러 개의 매개 변수 또는 인용 된 매개 변수). 응용 프로그램에

  1. 패스 1 매개 변수 :

    C:\>mybatch.bat app.exe "app_param" 
    C:\>mybatch.bat app.exe app_param 
    
  2. 패스 여러 매개 변수 :

    C:\>mybatch.bat app.exe "app_param1 app_param2 app_param3" 
    
  3. 공백이 포함 된 매개 변수를 전달 (그래서 인용해야 함) :

    C:\>mybatch.bat app.exe """parameter with spaces""" 
    
  4. 결합 된 예 : 일부 매개 변수는 공백이고, 다른 사람은 없습니다 :

    C:\>mybatch.bat app.exe "param_with_no_spaces ""parameter with spaces"" another_spaceless_param" 
    
관련 문제