我有一个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]\"";
但这也没有用。
答案 0 :(得分:6)
试试这个:
p.StartInfo.Arguments = "\"" + arg[0] + " " + arg[1] + " " + arg[2] + "\"";
p.Start();
建议在间隙之间使用多个参数时使用“”。
编辑:如果输入正确,则不必包含“\”。这是逃脱的角色。见下图。