我试图通过命令行将字符串传递给Win32程序,以便原样打印。
为什么我必须将"AAA <BBB@pobox.com>"转义为"""AAA <BBB@pobox.com>"""
但是
"AAA <BBB@pobox.com>",(包括逗号)转义为"\"AAA ^<BBB@pobox.com^>\","
我看不出在Windows命令行中的转义规则有什么一致性。
P.S. 我正在尝试生成.cmd文件
更新:
我正在使用简单的C程序进行测试,该程序使用gcc编译,没有链接其他对象文件。如果我换成perl,规则保持不变。
我试图创建一个通用的转义算法。它将生成调用perl并进行输出重定向的.cmd文件。目前,我的问题是,如果字符串包含带反斜杠转义的奇数个双引号,则输出重定向无法正常工作。在http://blogs.msdn.com/b/oldnewthing/archive/2010/09/17/10063629.aspx的最后一条评论中描述了同样的问题。
如果我使用""作为"的转义符,它会在空格处分隔,因此结果会变成2个参数而不是一个。同时""也有一些附加效果。
cmd
,它在传递“CommandLine”之前不会进行参数拆分。 - binki