将命令行参数从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)。
有人能解释我如何将这个特殊的"<">"参数传递给程序吗?
致以最良好的问候!
顺便说一下,我多次检查了路径,它们都是正确的。
您唯一需要的参数是-display
其他参数不是程序的参数,应由您使用RedirectStandardInput
和RedirectStandardOutput
处理
E.g
- 读取文件
D:'tmp'SrcPgm'image000.pbm
- 写信给流程的
StandardInput
- 从流程的
StandardOutput
中读取 - 写入
result.pbm
使用命令重定向运算符