在 Windows 批处理脚本中,ENDLOCAL
命令会结束本地化环境变量的作用范围,这意味着在 ENDLOCAL
之前设置的环境变量会被还原为 SETLOCAL
之前的状态。如果你希望在 ENDLOCAL
之后仍然保留某些环境变量的值,可以使用一种特殊的技巧来实现。
SET
命令和 ENDLOCAL
的组合你可以在 ENDLOCAL
命令之前使用 SET
命令将环境变量的值传递到 ENDLOCAL
之后。以下是一个示例脚本,展示了如何实现这一点:
@echo off
SETLOCAL
REM 设置环境变量
set MY_VAR=HelloWorld
REM 打印环境变量的值
echo Before ENDLOCAL: %MY_VAR%
REM 使用特殊技巧在 ENDLOCAL 之后保留环境变量
ENDLOCAL & set MY_VAR=%MY_VAR%
REM 打印环境变量的值
echo After ENDLOCAL: %MY_VAR%
MY_VAR
的环境变量。ENDLOCAL
之前环境变量 MY_VAR
的值。ENDLOCAL
结束本地化环境变量的作用范围,并立即使用 SET
命令将 MY_VAR
的值重新设置为 ENDLOCAL
之前的值。&
符号用于在同一行中执行多个命令。ENDLOCAL
之后环境变量 MY_VAR
的值,验证其是否被保留。ENDLOCAL
之前,环境变量的值会被扩展并传递到 ENDLOCAL
之后。这意味着如果环境变量的值包含其他环境变量的引用,这些引用会在 ENDLOCAL
之前被解析。ENDLOCAL
之后使用多个 SET
命令。例如:复制ENDLOCAL & set VAR1=%VAR1% & set VAR2=%VAR2%以下是一个示例脚本,展示了如何在 ENDLOCAL
之后保留多个环境变量:
@echo off
SETLOCAL
REM 设置环境变量
set VAR1=Value1
set VAR2=Value2
REM 打印环境变量的值
echo Before ENDLOCAL: VAR1=%VAR1%, VAR2=%VAR2%
REM 使用特殊技巧在 ENDLOCAL 之后保留环境变量
ENDLOCAL & set VAR1=%VAR1% & set VAR2=%VAR2%
REM 打印环境变量的值
echo After ENDLOCAL: VAR1=%VAR1%, VAR2=%VAR2%
通过这种方法,你可以确保在 ENDLOCAL
之后仍然保留所需的环境变量。
领取专属 10元无门槛券
手把手带您无忧上云