无法使用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);
您需要转义引号。这个问题是关于转义引号
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),在最后一个字符串中的每个双引号之前都需要一个双引号。如果没有@前缀,则在每个反斜杠之前都需要一个反斜杠,并在最后一个字符串中使用双引号。