C#Process不接受我的参数

时间:2011-01-24 16:49:46

标签: c# parameters process

我认为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 个答案:

答案 0 :(得分:5)

在这种情况下,尖括号意味着重定向输入/输出,这由cmd.exe完成,而不是由已启动的进程完成。

您有两种选择:

  • 调用cmd.exe而不是您的可执行文件,并提供可执行文件作为参数(以及您的exe的参数)
  • 自行重定向标准输入/输出。

答案 1 :(得分:0)

尝试"menu.xml \< menu.mpg \> newmenu.mpg"。而你正在添加5个args。为了做到这一点 - 做:"\"menu.xml \< menu.mpg \> newmenu.mpg\""

答案 2 :(得分:0)

我不确定你在这里想要完成什么。您是否尝试使用'&lt;'重定向IO和'&gt;',或者你试图将这些作为参数传递?

您可以通过使用/ C选项运行CMD.exe来重定向IO:

proc.StartInfo.FileName = @"C:\Windows\System32\Cmd.exe";
proc.StartInfo.Arguments = "/C \"" + this.spumux.SpumuxExe + " menu.xml < menu.mpg > newmenu.mpg\"";

答案 3 :(得分:0)

我只能通过创建批处理文件来解决此问题,我在其中传递参数而不使用“&lt;”,“&gt;”