首页/系统/Windows 运维速查/延迟变量展开 !var!
CMD 常用命令74 条

延迟变量展开 !var!

解决批处理块内变量“读到旧值”的经典问题:%var% 在解析时展开,!var! 在执行时展开。

Windows 运维速查系统更新于 2026-10-12
用途在块/循环内读取变量最新值
语法setlocal enabledelayedexpansion 之后使用 !变量!

常用示例

常用示例
@echo off
setlocal enabledelayedexpansion
set /a sum=0
for /l %%i in (1,1,5) do (
  set /a sum+=%%i
  echo 当前累计: !sum!
)
echo 最终: %sum%
同一行或同一代码块中的 %var% 会在进入块前一次性替换;要反映块内变化必须用 !var!。

易错点

  • 忘记 setlocal enabledelayedexpansion 时 !var! 会原样输出
  • 数据本身含 ! 时会被吞掉,需转义 ^! 或改用 PowerShell 处理

数据来源与参考

  • Microsoft Learn:延迟环境变量展开说明

相关工具

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