수색…


배치 파일에 제공되는 명령 줄 인수

배치 파일 명령 줄 인수는 배치를 시작할 때 제출되는 매개 변수 값입니다. 공백이 있으면 따옴표로 묶어야합니다. 실행중인 배치 파일에서 인수는 다양한 용도, 즉 :labels 리디렉션, 변수 설정 또는 명령 실행에 사용됩니다.

인수는 %1, %2, ..., %9 사용하여 배치 파일에서 참조됩니다.

@echo off
setlocal EnableDelayedExpansion
if not "%1"=="" (
    set "dir=%~1" & set "file=%~2"
    type !dir!\!file! | find /n /i "True" >nul^
     && echo Success! || echo Failure
)
exit /b

C:\Users\UserName> test.bat "C:\Temp\Test Results" "Latest.log"
Success!

노트:

  • 위의 예에서 인자 수정 자 %~1 을 사용하면 큰 따옴표가 제거됩니다.
  • 긴 문자열은 ^ 사용하여 여러 줄로 나뉘며 다음 줄의 문자 앞에 공백이 있습니다.

9 개 이상의 인수가있는 배치 파일

9 개 이상의 인수가 제공되면 shift [/n] 명령을 사용할 수 있습니다. 여기서 /n 은 n 번째 인수에서 시작하고 n은 0에서 8 사이를 의미합니다.

인수를 통해 루핑하기 :

:args
set /a "i+=1"
set arg!i!=%~1
call echo arg!i! = %%arg!i!%%
shift
goto :args

위의 예제에서 지연 확장 변수 i 는 변수 배열에 인수 값을 할당하는 데 사용됩니다. call 명령을 사용하면 루프 내에서 변수 값을 표시 할 수 있습니다.

계수 인수 :

for %%i in (%*) do (set /a ArgCount+=1)
echo %ArgCount%

변수를 n 번째 인수로 설정합니다.

set i=5
call set "path%i%=%%~i"

괄호 안의 인수 이동

다음 example.bat 가지며 인수 1 , 23 호출합니다.

@echo off

(
    shift
    shift
    echo %1
)

끝괄 괄호 문맥에 도달하면 변수 확장이 변경되므로 출력은 다음과 같습니다.

1

인수에 액세스하려면 대괄호 안에 들어가는 것이 문제가 될 수 있으므로 다음 호출을 사용해야합니다.

@echo off

(
    shift
    shift
    call echo %%1
) 

이제 출력은 3 됩니다. 이 기술로 CALL 명령을 사용하면 (추가 가변 확장으로 이어짐) 인수 액세스도 매개 변수화 될 수 있습니다.

@echo off

set argument=1

    shift
    shift
    call echo %%%argument%

지연된 확장과 함께 :

@echo off
setlocal enableDelayedExpansion
set argument=1

    shift
    shift
    call echo %%!argument!

출력은



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow