函数中的局部变量可以用来避免名称冲突,并保持函数本地的变量变化。 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