批次處理函式中區域性變數

2019-10-16 22:59:12

函式中的區域性變數可以用來避免名稱衝突,並保持函式原生的變數變化。 SETLOCAL命令首先用於確保命令處理器對所有環境變數進行備份。 通過呼叫ENDLOCAL命令可以恢復變數。 在兩者之間進行的更改是當前批次處理指令碼的本地處理。 當到達批次處理檔案結束時,即通過呼叫GOTO:EOFENDLOCAL被自動呼叫。

使用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