C# 使用ProcessStartInfo将路径传递到cmd未按预期工作
我使用Process和ProcessStartInfo启动一个带有通常重定向输出等的cmd窗口。然而,我尝试启动一个带有参数的命令行可执行文件,即使当我将字符串回显到cmd时字符串是正确的,当我在没有回显的情况下运行它时,我得到“'C:\Program'不是公认的内部或外部命令”就好像路径不在引号中,而空格将其抛出 非常感谢任何帮助C# 使用ProcessStartInfo将路径传递到cmd未按预期工作,c#,cmd,C#,Cmd,我使用Process和ProcessStartInfo启动一个带有通常重定向输出等的cmd窗口。然而,我尝试启动一个带有参数的命令行可执行文件,即使当我将字符串回显到cmd时字符串是正确的,当我在没有回显的情况下运行它时,我得到“'C:\Program'不是公认的内部或外部命令”就好像路径不在引号中,而空格将其抛出 非常感谢任何帮助 static void Backup(string machinename) { Process p = ne
static void Backup(string machinename)
{
Process p = new Process();
p.StartInfo = new ProcessStartInfo("cmd", "/c \"C:\\Program Files\\Citrix\\XenCenter\\xe.exe\" vm-export vm=" + machinename + " -s 192.168.00.00 -u root -pw Password1! filename=\"C:\\VMs\\" + machinename + ".xva\"")
{
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = false
};
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
Console.WriteLine(output);
}
您需要使用带有额外引号的空格环绕路径;但是你也应该使用
Environment.ExpandEnvironmentVariables
而不是硬编码为“c”。你不应该使用“cmd”来调用它-在这种情况下,它实际上对你不利,没有任何作用。只需直接调用可执行文件:
p.StartInfo = new ProcessStartInfo(
@"C:\Program Files\Citrix\XenCenter\xe.exe",
"vm-export vm=" + machinename + " -s 192.168.00.00 -u root -pw Password1! filename=\"C:\\VMs\\" + machinename + ".xva\"")
{
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = false
};