函數中的局部變數可以用來避免名稱衝突,並保持函數本地的變數變化。 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