【问题标题】:in a console app what's the best way to prevent special sequences in command line arguments from being escaped?在控制台应用程序中,防止命令行参数中的特殊序列被转义的最佳方法是什么?
【发布时间】:2013-01-04 17:21:57
【问题描述】:

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

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

 --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

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

【问题讨论】:

  • 嗯。如果有人错误地转义了他们在命令行上提供的参数,他们应该在他们在命令行上键入时修复它。这不是你应该在程序内部尝试和修复的(对用户的意图使用某种形式的“最佳猜测”)。
  • CodeProject here 上有一篇关于它的文章。

标签: c# .net command-line console-application command-line-arguments


【解决方案1】:

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

这是用户输入错误。您不应该尝试更正它的代码;只是优雅地失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多