传递路径,意在cmd使用的ProcessStartInfo不工作(Passing paths to

2019-08-17 13:28发布

使用工艺及的ProcessStartInfo发动cmd窗口与通常的重定向输出等。然而即时特林启动与参数的命令行的可执行文件,并且即使字符串是正确的,当我将其回声到CMD,当我运行它林没有回音,我得到“C:\程序'是不是一个公认的INTERAL或外部命令”,仿佛路径不是在引号和空间把它扔了。

任何帮助greatley感谢!

       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);
        }

Answer 1:

你不应该使用“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
        };


Answer 2:

你必须用额外的报价空间环绕路径; 但你也应该使用Environment.ExpandEnvironmentVariables而不是硬编码为“C”。



文章来源: Passing paths to cmd using ProcessStartInfo not working as intended
标签: c# cmd