0

我有一个 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]\"";

但这也没有奏效。

4

1 回答 1

6

尝试这个:

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

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

编辑:如果您输入正确,则不必包含“\”。它是转义字符。见下图。

在此处输入图像描述

于 2013-10-17T06:22:49.920 回答