如何在批处理脚本的for中用双引号来表示

TBo*_*dan 3 for-loop batch-file delimiter

我有一个文件,我希望使用for命令来检查它。我的问题是,我试图用双引号字符[“]来使符号脱字符,并且必须对其进行转义,所以我的for看起来像这样:

for /f tokens^=1^,2^,3^ delims^=^<^"^= %%a in ("%%i") do (

)
Run Code Online (Sandbox Code Playgroud)

而且我不明白为什么我从tokens tokens^=1^,2^,3**^**错误中删除最后一个[^] 会导致错误:delims是意外的。

关于如何用双引号修饰而不用逃避其他字符的任何建议?

jeb*_*jeb 5

问题是,您使用选项时不带引号,
例如中的 FOR /F "tokens=1,2 delims=[]" ...

但是,如果您想使用引号作为delim字符,则不能再使用封闭的引号。
然后,几乎所有字符都必须使用脱字符号转义,,=;<space>标准令牌定界符也必须转义。

甚至必须转义空格以创建单个选项令牌。
for /f tokens^=1^,2^,3 delims^=^<^"^= %%a
将被分成 for- /f- tokens=1,2,3-delims=<"=

但是/F期望恰好是一个或没有期权代币。

  • @jeb可以简化生活,对于/ f令牌^ = 1-3delims ^ = ^ &lt;^“ ^ =%a`也可以。对于一系列的令牌,不需要转义连字符。 ^ = 1-3`,并且选项之间没有空格。 (2认同)