在控制台应用程序中,防止命令行参数中的特殊序列被转义的最佳方法是什么?

本文关键字:转义 最佳 是什么 方法 控制台 命令行 参数 应用程序 | 更新日期: 2023-09-27 17:54:46

我编写了这个控制台应用程序,它读取一系列命令行参数并对它们进行处理。

问题是,如果用户输入如下内容:
 --folder "C:'my folder'" --username john

Main函数的args字符串数组将有2个元素,而不是4个:

1st element: "--folder"
2nd element: "C:'my folder'" --username john"

('"序列转义为双引号)

由于不使用引号会导致5个元素…

--folder C:'my folder' --username john
1st element: --folder
2nd element: C:'my
3rd element: folder'
4th element: --username
5th element: john

…解决这个问题的最好方法是什么?

在控制台应用程序中,防止命令行参数中的特殊序列被转义的最佳方法是什么?

这是Windows上奇怪的命令行解析规则的结果。请看这里http://msdn.microsoft.com/en-us/library/windows/desktop/17w5ykft(v=vs.85).aspx。命令行实际上应该是:--folder "C:'my folder''" --username john

这是用户输入错误。你不应该试图纠正它的代码;优雅地失败。