batch-file
기능들
수색…
비고
<parameter>
를 라벨에 추가하여 함수에 시작 변수를 추가 할 수 있습니다. 이 시작 변수는 %n
통해 액세스 할 수 있습니다. 여기서 n은 시작 변수의 번호입니다 (첫 번째 변수에는 %1
, 두 번째 변수에는 %2
, % 1 - % 9에는이 %n
메서드, 10-255 변수에는 Shift 명령 사용).
예 :
:function <var1> <var2>
call :function param1 param2
를 사용하면 param1
은 %1
로 액세스 할 수 있고 param2
는 %2
로 액세스 할 수 있습니다.
참고 : <parameter>
는 꼭 필요한 것은 아니지만 가독성을 높이는 데 도움이됩니다.
많은 변수들이 날고있을 때 유용한 유용한 트릭은 %n
과 함께 setlocal
과 endlocal
을 사용하는 것입니다. setlocal
및 endlocal
본질적으로 명령 프롬프트의 별도 인스턴스이기 때문에 함수를 설정합니다. 변수는 프레임에있는 동안에 만 고정됩니다.
setlocal
및 endlocal
을 사용하고 있으며 전역 값을 반환하는 경우이 값을 사용하십시오.
endlocal & set var=variable
전역 variable
var
를 variable
설정합니다. 이 변수들을 여러 변수에 대해 함께 연결할 수 있습니다.
endlocal & set var=variable & set var2=variable number 2
전역 변수 var
를 variable
로 설정하고 전역 값 var2
를 variable number 2
합니다.
코드 블록의 코드도 동시에 수행되므로이를 수행 할 수도 있습니다.
if "%var%"=="" (
endlocal
set %~2=10
)
그러나, 당신 은 이것을 할 수 없습니다 .
if "%var%"=="" (
set %~2=10
endlocal
)
단순 함수
call :FunctionX
rem More code...
:FunctionX
rem Some code here.
goto :eof
이것은 매우 간단한 함수입니다. 함수는 한 번에 여러 명령을 수행하는 프로그램 내 명령입니다. 함수는 레이블을 작성하고 코드를 삽입하여 작성되며 일단 완료되면 goto :eof
또는 exit /b <ErrorlevelYou'dLike>
를 추가하여 호출 된 위치로 리턴합니다. 함수는 call :functionname adparams
와 함께 call :functionname adparams
됩니다.
매개 변수가있는 기능
call :tohex 14 result
rem More code...
:tohex <innum> <outvar>
set dec=%1
set outvar=%~2
rem %n and %~n are functionally identical, but %~n is slightly safer.
goto :eof
함수가 별도의 일괄 처리 파일 인 것처럼 추가 매개 변수를 call
에서 가져옵니다.
참고 : <parameter>
는 필수는 아니지만 가독성을 높이는 데 도움이됩니다.
기능 setlocal 및 endlocal 활용
set var1=123456789
set var2=abcdef
call :specialvars
echo %var1%, %var2%
rem More code...
:specialvars
setlocal
set var1=987654321
set var2=fedcba
endlocal
goto :eof
setlocal
, endlocal
섹션의 섹션 내부에서 변수가 호출자의 변수와 분리되어 있기 때문에 % var1 % 및 % var2 %가 변경되지 않은 이유는 무엇입니까?
모두 결합하기
set importantvar=importantstuff
call :stuff 123 var1
rem More code...
:stuff <arg1> <arg2>
setlocal
set importantvar=%~1
echo Writing some stuff into %~2!
endlocal
set %~2=some stuff
setlocal
set importantvar=junk
endlocal
goto :eof
이것은 기본 함수, setlocal
및 endlocal
및 인수를 사용하여 홀수 함수를 만듭니다.
배치 파일의 익명 함수
익명 기능 기술은 사실 사용 CALL
명령은 내부적으로 사용 GOTO
서브 루틴 호출 및 인쇄 도움말 메시지를 남용하는 경우 변수를 두 번 확장을을 :
@echo off
setlocal
set "anonymous=/?"
call :%%anonymous%% a b c 3>&1 >nul
if "%0" == ":%anonymous%" (
echo(
echo Anonymous call:
echo %%1=%1 %%2=%2 %%3=%3
exit /b 0
)>&3
익명 함수는 CALL
뒤에 정의 된 경우에만 호출 할 수 있습니다 (대괄호 내에서 CALL
이 실행되는 경우 대괄호 마무리 컨텍스트 이후). 외부 스크립트 에서는 호출 할 수 없지만 일반적인 함수 호출보다 느립니다.
다른 배치 파일에서 함수 호출
library.cmd 라는 파일을 만들 수 있습니다.
@echo off
echo -/-/- Batch Functions Library -/-/-
:function1
echo argument1 - %1
goto :eof
나머지 파일의 코드없이 : function1 만 실행하려면 호출자 bat에 label1 : function1 이라는 레이블을 넣고 다음과 같이 사용하십시오.
@echo off
call :function1 ###
exit /b %errorlevel%
:function1
library.bat %*
출력은 다음과 같습니다 ( library.cmd
의 함수 외부에있는 코드는 실행되지 않습니다).
인수 1 - ###
자세한 정보는이 부분을 확인 하십시오 .