首页/系统/Windows 运维速查/setlocal / endlocal 变量作用域
CMD 常用命令74 条

setlocal / endlocal 变量作用域

为脚本开一段“变量沙箱”:setlocal 之后的变量改动不会泄漏到外部环境,是脚本防污染的标准做法。

Windows 运维速查系统更新于 2026-10-12
用途开启/结束局部环境作用域
语法setlocal [enabledelayedexpansion];endlocal
行为脚本结束或 exit /b 时自动结束局部环境;支持嵌套但需对应

常用示例

常用示例
@echo off
setlocal
set TMP_MODE=fast
echo %TMP_MODE%
endlocal
REM 外部环境不受 TMP_MODE 影响
enabledelayedexpansion 常与 setlocal 连用;嵌套调用子程序时各自 setlocal 互不污染。

易错点

  • setlocal 内修改 PATH 等变量,endlocal 或脚本结束时改动全部回滚,别在子程序里改完就期望它保留
  • 嵌套 setlocal 后要逐层 endlocal,否则环境隔离边界混乱

数据来源与参考

  • Microsoft Learn:setlocal 命令

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌