函式中的區域性變數可以用來避免名稱衝突,並保持函式原生的變數變化。 SETLOCAL
命令首先用於確保命令處理器對所有環境變數進行備份。 通過呼叫ENDLOCAL
命令可以恢復變數。 在兩者之間進行的更改是當前批次處理指令碼的本地處理。 當到達批次處理檔案結束時,即通過呼叫GOTO:EOF
,ENDLOCAL
被自動呼叫。
使用SETLOCAL
對變數進行在地化允許在函式中自由使用變數名稱,而不必擔心與函式外使用的變數的名稱衝突。
以下範例顯示了如何在函式中使用區域性變數。
@echo off
set str=Outer
echo %str%
CALL :SetValue str
echo %str%
EXIT /B %ERRORLEVEL%
:SetValue
SETLOCAL
set str=Inner
set "%~1=%str%"
ENDLOCAL
EXIT /B 0
在上面的程式中,變數str
被定位在函式SetValue
中。 因此,即使str
值被返回到main
函式,main
函式中str
的值也不會被函式返回的值替換。
以上命令產生以下輸出。
Outer
Outer