我正在使用Process和ProcessStartInfo来启动一个带有常规重定向输出等的cmd窗口。但是我想用参数启动命令行可执行文件,即使字符串是正确的,当我将它回显到cmd时,我运行它没有回声我得到''C:\ Program'不被识别为内部或外部命令“好像路径不是引号并且空间正在抛弃它。
任何帮助都很感激!
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);
}
答案 0 :(得分:3)
你不应该使用“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
};
答案 1 :(得分:0)
你需要有带空格的环绕路径和额外的引号;但你也应该使用Environment.ExpandEnvironmentVariables
而不是硬编码来“c”。