AIGC标识 DOS 延迟变量扩展

DOS 延迟变量扩展

一、核心命令

setlocal enabledelayedexpansion

作用:开启延迟变量扩展;同时创建局部变量作用域。

二、三类符号区分

  1. %%x
    FOR循环专属循环变量,仅在for内部使用;脚本内for必须双百分号。
  2. %var%
    普通变量,预解析:整行/代码块执行前一次性替换完成。
  3. !var!
    延迟扩展变量,实时解析:运行到该行时才读取变量最新值;必须开启enabledelayedexpansion才能生效。

三、批处理底层铁律

( )包裹的代码块(for/if内部):
默认一次性扫描全文,提前替换所有%var%
块内循环变量动态变化时,%数组[%%x]%无法正确解析下标。

四、数组循环固定写法

错误

%nets[%%n]%

执行前不会解析%%n,直接当成文本,取值失败。

正确

!nets[%%n]!

解析顺序:运行时先算出%%n的值 → 再读取对应数组元素。

五、使用场景速判清单

✅ 必须开启延迟扩展、使用!var!

  1. for / if ( )代码块内修改变量,紧接着读取
  2. FOR循环中用循环变量当下标访问数组(你的场景)

❌ 不需要延迟扩展
脚本顶层单行代码、不需要动态刷新变量值,直接用%var%

六、极简口诀

循环变量双百分 %%x
普通变量百分包 %var%
块内动态要实时,感叹号 !var!
数组下标带循环,固定格式 !arr[%%x]!
感叹号生效前提:setlocal enabledelayedexpansion

七、最简模板直接套用

@echo off
setlocal enabledelayedexpansion
::定义数组
set arr[0]=A
set arr[1]=B
::遍历
for /l %%n in (0,1,1) do (
    echo !arr[%%n]!
)
posted @ 2026-07-27 15:19  X2009  阅读(19)  评论(0)    收藏  举报