批处理脚本 - 函数中的局部变量

函数中的局部变量可用于避免名称冲突并将变量更改保留在函数的本地。 首先使用 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 值返回到主函数,主函数中的 str 值也不会被函数返回的值替换。

上述命令会产生以下输出。

Outer
Outer

❮ batch_script_functions.html