个人观点:
!!是不能嵌套的,系统是这样识别相邻!!所以,输入:!!a!+b!这样的格式,原先你是想取出a的值,再取出+b后的值,系统是把相邻两个!结合在一起,也就是先执行!!和!+b!,这样就出现错误。
你是想这样输出吧?:
UserID_1=1
UserName_1=2
UserType_1=3
Password_1=4
Range_1=5
UserID_2=6
UserName_2=7
UserType_2=8
Password_2=9
Range_2=10
UserID_3=11
UserName_3=12
UserType_3=13
Password_3=14
Range_3=15
可以参考楼上“公子七哥”的答案,采用
for %%j in (!startnum!) do set Range_%%i=!var_%%j!
这样就避免了!!的嵌套。
而!和%的嵌套系统是可以识别的。
@echo off
setlocal enabledelayedexpansion
set startnum=0
for /l %%i in (1,1,3) do (
set /a startnum=%%i*5-5
echo startnum=!startnum!
pause
set /a startnum+=1
for %%j in (!startnum!) do set UserID_%%i=!var_%%j!
set /a startnum+=1
for %%j in (!startnum!) do set UserName_%%i=!var_%%j!
set /a startnum+=1
for %%j in (!startnum!) do set UserType_%%i=!var_%%j!
set /a startnum+=1
for %%j in (!startnum!) do set Password_%%i=!var_%%j!
set /a startnum+=1
for %%j in (!startnum!) do set Range_%%i=!var_%%j!
echo UserID_%%i=!UserID_%%i!
echo UserName_%%i=!UserName_%%i!
echo UserType_%%i=!UserType_%%i!
echo Password_%%i=!Password_%%i!
echo Range_%%i=!Range_%%i!
)