控制台应用程序中的多个args无法正确解析

时间:2013-01-22 17:41:24

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

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

添加以下内容' args'将3个字符串放入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删除,但在这里,仍有一些引用......但我无法看到问题......

感谢您的帮助!

1 个答案:

答案 0 :(得分:12)

\"值中有一个DestinationFolder,它会“转义”引号,包括它在值的文本中,而不是与开始引号配对以关闭字符串。您需要文字\,因此请使用\\

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

(你甚至可以在SO的突出显示引擎中看到逃脱行动)