使用c#将多个参数传递给外部exe程序时出现问题

时间:2013-10-17 06:17:51

标签: c#

我有一个exe文件,我试图通过c#传递参数。代码如下

class Class1
{
    static void Main()
    {
        string[] arg;
        arg = new string[3];
        Process p = new Process();

        p.StartInfo.FileName = @"D:\xxx.exe";
        for (int i = 0; i < 3; i++)
        {
            arg[i]  = Console.ReadLine();
        }

        p.StartInfo.Arguments = arg[0] + " " + arg[1] + " " + arg[2];
        p.Start();
    }
}

我打开一个控制台,然后在那里写出参数。一旦我完成输入3个参数,我就从3个参数中创建一个字符串,然后使用Process.Start()字符串中的参数调用p.StartInfo.Arguments。 exe文件加载但不生成任何输出。奇怪的是,如果我从我的电脑打开exe文件,然后写

  

Arg1.txt Arg2.txt Arg3.txt

并按下输入exe文件生成输出。但是,相同样式的相同参数当前正在通过C#代码传递,并且它不会生成任何输出。我不明白我做错了什么。关于这一点,StackOverflow有很多问题,我知道,但是他们都提出了与我在这里所做的相同的程序。我也尝试过将参数作为

p.StartInfo.Arguments = "\"arg[0]\"\"arg[1]\"\"arg[2]\"";

但这也没有用。

1 个答案:

答案 0 :(得分:6)

试试这个:

p.StartInfo.Arguments = "\"" + arg[0] + " " + arg[1] + " " + arg[2] + "\"";
p.Start();

建议在间隙之间使用多个参数时使用“”。

编辑:如果输入正确,则不必包含“\”。这是逃脱的角色。见下图。

enter image description here