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

本文关键字:外部 exe 命令行 参数 | 更新日期: 2023-09-27 18:21:16

我有一个类似的问题,这里已经解决了。但是我不知道这个问题是怎么解决的。我有一个程序,获取参数,定义一个输入和输出文件。从命令行运行此操作,一切正常:

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

但是通过System.Diagnostics.Process运行是不起作用的。我得到错误"无效的命令行参数:<",之后会出现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();

我已经试着写信处理了。StandardInput之后我调用了进程。Start(),但在使用调试器时,外部程序有时已经完成(HasExited==true)。

有人能解释我如何将这个特殊的"<">"参数传递给程序吗?

致以最良好的问候!

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

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

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

E.g

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

使用命令重定向运算符