当使用立即扩展(写入而不是批处理文件)时,子字符串扩展在for
循环集中(即后面的括号部分)起作用:in
%%I
%I
set "X=123"
for %I in (%X:~1,1%) do @echo %I
但是,当应用延迟扩展时,它会失败:
for %I in (!X:~1,1!) do @echo %I
我希望输出是:
2
但相反的是:
!X:~1 1!
为什么会这样,我该如何防止呢?
我知道我可以通过引用 set 和 using 来解决这个~
问题,但这不是我想要的:
for %I in ("!X:~1,1!") do @echo %~I
以下命令行也失败:
for %I in (!X:*2=!) do @echo %I
意外的输出是:
!
使用,和开关for
的命令行也会因此类子字符串语法而失败。/R
/L
/R
它肯定与,
and是, ,等=
的标记分隔符这一事实有关。cmd
SPACETAB;