- 帖子
- 508
- 积分
- 1490
- 技术
- 87
- 捐助
- 0
- 注册时间
- 2008-7-17
|
回复 9# shelluserwlb
关键问题在于对%,和!扩展顺序的理解
在cmd中,%的扩展是优先于其他特殊字符的
%%会扩展成%
所以
%%i会扩展成%i
所以
for /l %%i in (0,1,3) do call echo %%!ok:~%%i,1!%%
首先被扩展成以下的结果
for /L %i in (0 1 3) do call echo %!ok:~%i,1!%
然后for先对命令字句中可替换参数%i进行扩展
call echo %!ok:~0,1!%
call echo %!ok:~1,1!%
call echo %!ok:~2,1!%
call echo %!ok:~3,1!%
然后for再对命令字句中的延迟变量进行扩展
call echo %a%
call echo %b%
call echo %c%
call echo %d%
然后call再对命令中环境变量进行扩展
echo aaaaa
echo bbbbb
echo cccccc
echo ddddd |
|