Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ProcessStartInfo将路径传递到cmd未按预期工作_C#_Cmd - Fatal编程技术网

C# 使用ProcessStartInfo将路径传递到cmd未按预期工作

C# 使用ProcessStartInfo将路径传递到cmd未按预期工作,c#,cmd,C#,Cmd,我使用Process和ProcessStartInfo启动一个带有通常重定向输出等的cmd窗口。然而,我尝试启动一个带有参数的命令行可执行文件,即使当我将字符串回显到cmd时字符串是正确的,当我在没有回显的情况下运行它时,我得到“'C:\Program'不是公认的内部或外部命令”就好像路径不在引号中,而空格将其抛出 非常感谢任何帮助 static void Backup(string machinename) { Process p = ne

我使用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);
        }

您需要使用带有额外引号的空格环绕路径;但是你也应该使用
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
        };