无法使用C#执行cmd命令

时间:2015-12-01 12:15:42

标签: c# windows command-line cmd

我一直在尝试从C#调用cmd命令以下,但它没有用,我的错误路径错误。虽然我直接从CMD执行它是有效的:

CMD命令:C:\Program Files (x86)\ABC Client>xyz.exe /launch "Your Software 12.7"

我尝试了以下代码:

ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd")
{
       WorkingDirectory = @"C:\Windows\System32",
       Arguments = "/C \"\"C:/Program Files (x86)/ABC Client/xyz.exe\"\" /launch 'Your Software 12.7'",
       RedirectStandardOutput = true,
       RedirectStandardError = true,
       WindowStyle = ProcessWindowStyle.Normal,
       UseShellExecute = false
};

Process process = Process.Start(processStartInfo);

4 个答案:

答案 0 :(得分:1)

您需要转义引号。 This question is about escaping quotation marks

   string softwareName =  "\"Your Software 12.7\"";

这应该可以解决问题。

答案 1 :(得分:1)

最后修正:正确的字符串将是:

Arguments = "/C \"\"C:/Program Files (x86)/ABC Client/xyz.exe\" /launch \"Your Software 12.7\"\"";

感谢大家的意见:)

答案 2 :(得分:0)

如果问题只是要执行的字符串,我认为这会输出你想要的内容:

Arguments=@"C:\Program Files (x86)\ABC Client\xyz.exe /launch ""Your Software 12.7""";

答案 3 :(得分:0)

以下任何一种都应该有效:

Arguments = @"/C ""C:\Program Files (x86)\ABC Client\xyz.exe"" /launch ""Your Software 12.7""";

Arguments = "/C \"C:\\Program Files (x86)\\ABC Client\\xyz.exe\" /launch \"Your Software 12.7\"";

也就是说,程序位置周围有双引号(你有两次双引号而不是一次),反斜杠而不是正斜杠,以及"你的软件27.7"的双引号。

使用字符串文字(@前缀),您需要在最终字符串中的每个双引号之前使用双引号。如果没有@前缀,则需要在每个反斜杠之前使用反斜杠,并在最终字符串中使用双引号。