将命令行参数从C#传递到外部exe

时间:2012-01-23 20:53:18

标签: c# command-line parameters

我遇到了类似已解决的问题here。但我无法弄清楚,问题是如何解决的。我有一个程序,可以定义一个输入和输出文件。从Commend行运行,一切正常:

D:\Tools\siftDemoV4>siftWin32.exe -display < D:\tmp\SrcPgm\image000.pbm > result.pbm

但是通过System.Diagnostics.Process运行不起作用。我收到错误“无效的命令行参数:&lt;”然后发生System.InvalidOperationException。

var process = new Process()
{
   StartInfo =
   {
     Arguments = string.Format(@"-display < {0} > {1}", configuration.Source,
       configuration.Destination),
     FileName = configuration.PathToExternalSift,
     RedirectStandardError = true,
     RedirectStandardInput = true,
     RedirectStandardOutput = true,
     UseShellExecute = false,
     CreateNoWindow = true,
     ErrorDialog = false,
   }
};

process.EnableRaisingEvents = true;
process.Exited += OnProcessExited;
process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);
process.ErrorDataReceived += new DataReceivedEventHandler(process_ErrorDataReceived);
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();

在调用process.Start()之后,我已经尝试写入process.StandardInput,但是在使用调试器时,外部程序有时已经完成(HasExited == true)。

任何人都可以解释我如何通过这个特殊的“&lt;” “&gt;” 中程序的参数?

最好的问候!

顺便说一句,我多次检查路径,它们是正确的。

1 个答案:

答案 0 :(得分:2)

您需要的唯一参数是-display其他参数不是程序的参数,您应该使用RedirectStandardInputRedirectStandardOutput

来处理

E.g

  • 阅读文件D:\tmp\SrcPgm\image000.pbm
  • 写入您的流程的StandardInput
  • 从您流程的StandardOutput读取
  • 写信给result.pbm

Using command redirection operators