使用带引号的参数调用批处理文件

时间:2010-12-01 18:26:24

标签: batch-file

我有一个批处理文件test.bat,它从命令行获取2个参数。

Arg1 - "C:\work Area\"
Arg2 - "Hello politics="Hero Jack""

我将test.bat称为

test.bat "C:\work Area\" "Hello politics="Hero Jack""

我希望bat文件将第二个参数作为Hello politics="Hero Jack"。我不知道如何使用参数调用test.bat,以便它发生这样...... 它所采用的第二个参数类似于"Hello politics="Hero,它会丢弃Jack"。你能让我知道我错误地打电话了吗?

3 个答案:

答案 0 :(得分:3)

在我看来,不可能把它作为一个参数

Arg2 - "Hello politics="Hero Jack""

这是因为参数标记器对插入符号不是很感兴趣。 似乎,tokenizer只计算引号。

解析器检测到插入符并可以转义特殊字符,如& >或者<
但是将行拆分为%1,%2参数的标记生成器使用该规则。 分隔符,如; =启动一个新参数,如果在

之前存在不等的引号计数,则只能抑制此参数
test.bat """This is one param"
test.bat ""These are four params"
test.bat ^"This is also one param"
test.bat ^^"This is also one param"

但您可以使用解决方法,例如

test.bat "C:\work Area\" "Hello politics=""Hero Jack""

这创造了%2“Hello politics =”“Hero Jack”“ 然后你可以用一个引号替换所有双引号。

答案 1 :(得分:0)

在每个内部引号之前使用carat ^作为转义字符:

test.bat "C:\work Area\" "Hello politics=^"Hero Jack^""

我希望这适合你。

来源:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds_shelloverview.mspx?mfr=true

答案 2 :(得分:0)

好的,请参考2.尝试将整个参数字符串包装在一对额外的引号中:

test.bat ""C:\work Area\" "Hello politics="Hero Jack"""

来源:http://ss64.com/nt/syntax-esc.html