如何从 C# 代码向 exe 发送多个参数

How to send multiple parameters to exe from c# code

我正在尝试从 C# 代码调用 exe。如果我 运行 来自命令提示符的 exe,它工作正常

C:\abc\abc.exe -e dev -l line1 -q 1

我试图通过传递所有三个参数来调用同一个 exe,但是如果我在 Trace 中看到它,参数的 none 会传递给 exe。谁能告诉我如何通过它。

这是代码

string[] cParams = new string[] { "dev", "Line1", "1" };

ProcessStartInfo startInfo = new ProcessStartInfo(string.Concat(exePath, "abc.exe"));
startInfo.Arguments = "\"" + cParams[0] + " " + cParams[1] + " " + cParams[2] + "\"";
startInfo.RedirectStandardOutput = true;    
startInfo.UseShellExecute = false;
System.Diagnostics.Process.Start(startInfo);

您将所有参数括在引号中。如果您将每个参数分别用引号括起来,它应该可以工作。

通过将其括在引号中,您实际上只传递了一个参数。您还遗漏了开关(-e-l-q)。我相信你想要:

ProcessStartInfo startInfo = new ProcessStartInfo(string.Concat(exePath, "abc.exe"));
startInfo.Arguments = "-e dev -l line1 -q 1";

或者如果您的 "arguments" 来自数组:

startInfo.Arguments = string.Format("-e {0} -l {1} -q {2}", cParams);

如果您查看您的参数字符串,它会输出到 "dev Line1 1"。这相当于调用

C:\abc\abc.exe "dev Line1 1"

您可以简化您的论点:

startInfo.Arguments = "-e dev -l line1 -q 1";

或者修复您正在构建的字符串以删除引号,并附加您的“-e”、“-l”等:

startInfo.Arguments = string.Format("-e {0} -l {1} -q {2}", cParams[0], cParams[1], cParams[2]);