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

Joh*_*ith 2 .net c# command-line console-application command-line-arguments

我编写了这个控制台应用程序,它读取一系列命令行参数并对它们执行某些操作.

问题是,如果用户输入如下内容:

 --folder "C:\my folder\" --username john
Run Code Online (Sandbox Code Playgroud)

args Main函数的String数组将有2个元素而不是4个:

1st element: "--folder"
2nd element: "C:\my folder\" --username john"
Run Code Online (Sandbox Code Playgroud)

(\"序列作为双引号转义.)

由于不使用引号会产生5个元素......

--folder C:\my folder\ --username john

1st element: --folder
2nd element: C:\my
3rd element: folder\
4th element: --username
5th element: john
Run Code Online (Sandbox Code Playgroud)

...解决这个问题的最佳方法是什么?

Pet*_*man 6

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

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