2011-04-20 2 views
18

돌아 가기 배치 파일로 전달되었는지 여부를 확인하는 방법,이 같은 일을 기억 :윈도우 7 배치 파일 : 매개 변수는 90 년대 중반에

if %1==. dir 

을 기본적으로, 당신은 dodir.bat에 위의 코드를 넣어 경우 매개 변수를 전달하지 않고 자체적으로 실행하면 dir 명령이 실행됩니다. 그러나 매개 변수로 아무 것도 전달하지 않으면 dir 명령이 실행되지 않습니다.

내 Windows 7 배치 파일에서 작동하지 않는 것 같습니다. 아마도 나는 적절한 구문을 기억하지 못합니다. 어떤 도우미? 따옴표로 둘러싼

+0

는 "모든 잡을"예 : http://stackoverflow.com/questions/830565/how-do-i-check-that-a-parameter-is-defined- 호출 할 일괄 파일/34552964 # 34552964 –

답변

11

실제로 if %1.==. command (이후는 %1)입니다. 그리고 이제 Windows 7에서이 기능을 사용할 수 있습니다.

사용 예제 : 매개 변수가 ", < 같은 다양한 기호 매개 변수가 견적 (")를 포함하는 경우 등

if "%1"==""이 중단됩니다 포함되어있는 경우

if %1.==. (
    echo No parameters have been provided. 
) else (
    echo Parameters: 
    echo %* 
) 
+0

아 .. 지금 기억 해요! thx – oscilatingcretin

11

시도 :

if "%1"=="" (
    echo "nothing was passed" 
) else (
    echo "a parameter was passed" 
    dir 
) 

당신은 그냥 교육 목적을 위해 거기에 넣어, 에코의 밖으로 걸릴 수 있습니다.

42

if %1.==. dir이 중단됩니다. 대신

사용 if "%~1"=="" :

if "%~1"=="" (
    echo No parameters have been provided. 
) else (
    echo Parameters: %* 
) 

이 Windows와 DOS의 모든 버전에서 작동합니다.

단위 테스트 :

C:\>test 
No parameters have been provided. 

C:\>test "Lots of symbols [email protected]#$%^&*()_+<>?./`~!, but works" 
Parameters: "Lots of symbols [email protected]#$%^&*()_+<>?./`~!, but works" 
+0

% ~ 1에 대한 참조를 작성하거나 전달할 수 있습니까? – Josejulio

+1

@josejulio "call /?"을 할 수 있습니다. 매개 변수로 수행 할 수있는 모든 멋진 작업에 대한 세부 정보를 얻을 수 있습니다. % 1에 대해 다음과 같이 말합니다 : % 1을 확장하여 주변 따옴표를 제거하십시오 ("). – Tolga