如何从 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]);
我正在尝试从 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]);