无法在C#中正确获取命令行参数

时间:2009-04-27 09:21:01

标签: c# command-line

在c#.Net中,我无法正确获取命令行参数。 在我给出如下命令的情况下它有问题:

myProgram.exe "c:\inputfolder\" "d:\output.txt"

由于args []数组中的反斜杠字符(我认为它是一个转义字符)我只得到一个参数而不是两个 如果我没有反斜杠就可以正常工作:

myProgram.exe "c:\inputfolder" "d:\output.txt"

或没有双引号:

myProgram.exe c:\inputfolder\ "d:\output.txt"

4 个答案:

答案 0 :(得分:5)

我从未遇到过这样的问题,但是如果您想通过自己使用System.Environment.CommandLine解析命令行来获取它。

答案 1 :(得分:4)

这是一个众所周知的解析问题,除了将整个命令行作为单个字符串并自己解析之外,您无法做很多事情。

答案 2 :(得分:4)

反斜杠正在逃避shell中的引号字符。你必须使用额外的反斜杠:

myProgram.exe "c:\inputfolder\\" "d:\output.txt"

您可以使用以下简短示例程序来测试命令行解析:

using System;

class Program
{
    static void Main(string[] args)
    {
        for (int i = 0; i < args.Length; i++)
        {
            Console.WriteLine(string.Format("Argument {0}: {1}", i, args[i]));
        }
    }
}

答案 3 :(得分:0)

如果其他人试图在命令行args中找到关于双引号的官方文档,我能找到的最接近的是c ++,它似乎直接适用:http://msdn.microsoft.com/en-us/library/17w5ykft.aspx