【问题标题】:Multiple args in Console Application not parsing correctly控制台应用程序中的多个参数未正确解析
【发布时间】:2013-01-06 01:11:19
【问题描述】:

易于复制,但对我来说真的很奇怪:

将以下带有 3 个字符串的“args”添加到 VisualStudio 的命令行参数文本框中(在项目属性->调试->启动选项下):

-SourceFile:"c:\temp\file.txt" -DestinationFolder:"c:\temp\" -ArchiveFolder:"C:\temp\"

使用这个简单的控制台应用程序对其进行测试:

class Program
{
    static void Main(string[] args)
    {
        foreach (string t in args)
        {
            Console.WriteLine(t);
        }
        Console.ReadKey();
    }
}

结果:数组 (args[]) 有 2 个而不是 3 个字符串?

[0] SourceFile:c:\temp\file.txt
[1] DestinationFolder:c:\temp" -ArchiveFolder:C:\temp"

谁能解释一下为什么会这样?引号有一些奇怪的原因,正常情况下,引号会被.net删除,但是在这里,仍然有一些引号...但是我看不到问题...

感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

    您在DestinationFolder 值中有一个\",它“转义”了引号,将其包含在值的文本中,而不是与开头的引号配对以关闭字符串。你想要一个文字,\,所以使用\\

    -SourceFile:"c:\temp\file.txt" -DestinationFolder:"c:\temp\\" -ArchiveFolder:"C:\temp\\"
    

    (你甚至可以在 SO 的高亮引擎中看到转义)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-19
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 2011-01-14
      • 2020-11-29
      • 1970-01-01
      相关资源
      最近更新 更多