核心思想:开启CMD的延缓环境变量功能,使用“!!”获取动态生成的变量,开启了CMD的延缓环境变量功能后才可以使用“!!”来获取变量的值,而且是当脚本运行到“!!”时才查找符号表来取值,所以可以获取动态生成的变量的值,普通的“%%”是在该语句刚读取到后就替换好字符串,当遇到这种情况的循环时就不好用了。
示例代码:
@echo off
setlocal ENABLEDELAYEDEXPANSION
FOR /L %%i IN (1,1,10) DO (
SET/a a%%i=%%i+%%i
)
FOR /L %%i IN (1,1,10) DO (
echo !a%%i!
)
测试结果:
“setlocal ENABLEDELAYEDEXPANSION”就是开启CMD的延缓环境变量的功能,具体说明执行“setlocal/?”查看
@echo off
setlocal enabledelayedexpansion
set Str=38,146,221,249
for %%a in (%Str%) do (
set /a Num+=1
set "S!Num!=%%~a"
)