无法使用C#执行cmd命令

本文关键字:执行 cmd 命令 | 更新日期: 2023-09-27 18:25:15

我一直试图从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);

无法使用C#执行cmd命令

您需要转义引号。这个问题是关于转义引号

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

这应该奏效。

最终修复:正确的字符串为:

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

感谢大家的投入:)

如果问题只是要执行的字符串,我认为它输出的正是您想要的:

Arguments=@"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""";
Arguments = "/C '"C:''Program Files (x86)''ABC Client''xyz.exe'" /launch '"Your Software 12.7'"";

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

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