C # Процесс не принимает мои параметры - PullRequest
2 голосов
/ 24 января 2011

Я думаю, что у класса процесса C # есть проблема с принятием символов < или >, когда они передаются как параметры.

Когда я вызываю следующий код, исполняемый файл возвращает мне ошибку, указывающую, чтоЯ передал более одного аргумента.

 proc = new Process();
 proc.StartInfo.FileName = this.spumux.SpumuxExe;
 proc.StartInfo.Arguments = "menu.xml < menu.mpg > newmenu.mpg";
 proc.StartInfo.UseShellExecute = false;
 proc.StartInfo.CreateNoWindow = true;
 proc.StartInfo.RedirectStandardOutput = true;
 proc.StartInfo.RedirectStandardError = true;
 proc.EnableRaisingEvents = true;
 proc.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
 proc.ErrorDataReceived += new DataReceivedEventHandler(OutputHandler);
 proc.Exited += new EventHandler(ProcExited);
 proc.Start();
 proc.BeginOutputReadLine();
 proc.BeginErrorReadLine();

Этот код обычно работал с любым другим исполняемым файлом, который я пробовал до сих пор, без каких-либо проблем.Так что надо что-то делать с <, > символами

Есть идеи?

Ответы [ 4 ]

5 голосов
/ 24 января 2011

Угловые скобки в этом случае означают перенаправление ввода / вывода, которое выполняется cmd.exe, а не запущенным процессом.

У вас есть два варианта:

  • вызовите cmd.exe вместо вашего исполняемого файла и предоставьте исполняемый файл в качестве аргумента (а также аргументы для вашего exe-файла)
  • перенаправьте стандартный ввод / вывод самостоятельно.
0 голосов
/ 24 января 2011

Я смог решить эту проблему только путем создания командного файла, в котором я передаю аргументы без "<", ">"

0 голосов
/ 24 января 2011

Я не уверен, что вы пытаетесь достичь здесь. Вы пытаетесь перенаправить ввод-вывод с помощью '<' и '>', или вы пытаетесь передать их в качестве аргументов?

Вы можете перенаправить ввод-вывод, запустив CMD.exe с параметром / C:

proc.StartInfo.FileName = @"C:\Windows\System32\Cmd.exe";
proc.StartInfo.Arguments = "/C \"" + this.spumux.SpumuxExe + " menu.xml < menu.mpg > newmenu.mpg\"";
0 голосов
/ 24 января 2011

попробуй "menu.xml \< menu.mpg \> newmenu.mpg".И вы добавляете 5 аргументов.Чтобы сделать это одно - сделайте: "\"menu.xml \< menu.mpg \> newmenu.mpg\""

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