Передача путей в cmd с использованием ProcessStartInfo не работает должным образом - PullRequest
1 голос
/ 08 октября 2009

Я использую 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);
        }

Ответы [ 2 ]

3 голосов
/ 08 октября 2009

Вы не должны использовать «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
        };
0 голосов
/ 08 октября 2009

Вы должны иметь объемные пути с пробелами с дополнительными кавычками; но вы должны также использовать Environment.ExpandEnvironmentVariables вместо жесткого кода для "c".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...