对带引号的命令使用Windows命令行

对带引号的命令使用Windows命令行,windows,batch-file,for-loop,command-line,cmd,Windows,Batch File,For Loop,Command Line,Cmd,我正在尝试处理包含如下格式的值的文件: Token1 Token2 Token3 Token4 "ValueA", "ValueB, ValueC", "ValueD", "Value E" (为了清晰起见,我添加了标题)。我只想要代币2和4 以下命令: for /f "tokens=2,4 delims=," %a in (TestSource.txt) do @echo %a %b 确实有效,但当然,当Token2包含逗号时(如上例中所示),它会在该逗

我正在尝试处理包含如下格式的值的文件:

 Token1    Token2            Token3    Token4
"ValueA", "ValueB, ValueC", "ValueD", "Value E"
(为了清晰起见,我添加了标题)。我只想要代币2和4

以下命令:

for /f "tokens=2,4 delims=," %a in (TestSource.txt) do @echo %a %b
确实有效,但当然,当Token2包含逗号时(如上例中所示),它会在该逗号处被破坏,因为FOR命令似乎不太清楚

对于这个限制是否有任何已知的解决方法?我做了很多研究,看到了一个“usebackq”命令,但我认为这不是我需要的

谢谢

for /f tokens^=3^,7^ delims^=^" %f in (data.csv) do echo "%f", "%g"
有两种方法可以为
for
命令包含“选项”字符串。因为它可以包含空格和特殊字符,所以第一个是常用的带引号的字符串。但在某些情况下,这是不够的


第二种方法显示在包含的代码中:转义选项字符串中的所有分隔符。

如果只按引号字符分隔字符串,而忽略仅包含逗号的字符串,该怎么办。这是一个好主意-但我失败了,因为在使用“作为分隔符时,即使尝试转义它(如^)时,也会出现语法错误。否则,那对我就行了<代码>对于/f令牌^=3^,7^ delims^=^”%f in(data.csv)do echo“%f”,“g”MC ND,非常非常非常好。非常好。从不知道如何在事物中包含“a”。现在我知道了。好的一般原则。谢谢另外,请将此作为答案而不是评论发布,以便将其标记为已回答。@JoeDF,对不起,我的收件箱被缩写了。当然,你和代码是对的。