可能没说清楚,我说的分隔符不是针对集合〈括号〉的,而是针对参数的。for的参数一般要使用双引号,但他这里没有使用,是特例。你也可以这样试试:
for /f tonken=1 delims= %%a in ("a" b c") do echo;%%a
或:
for /f "token=1" "delims=" %%a in ("a b c") do echo;%%a
for命令的参数存在二次转义:
(1)cmd.exe在读取时,"options"参数的必须作为一个整体传送到for命令。因此,其中的空格、分号、等号、回车符号都必须转义,否则"options"将被截断为多个部分分次传递到for命令,导致出错。转义的方式可以是使用双引号连续,也可以是使用尖号逐个转义。当然了。如果的"options"中没有这些特殊符号,自然不需要任何转义的。如: for /f "usebackq" %%i in (set) do (cmds)
(2)for命令之后会对传递过来的参数"options"进行自行解析,依据是关键字(tokens,delins等)和分隔符。上面转义过的空格、分号、等号、回车符号再次成为特殊符号,用于分割参数。