我遇到类似的问题,因为已经解决here。但我无法弄清楚,问题是如何解决的。我有一个程序,它可以获取输入和输出文件的参数。从Commend行运行,所有工作正常:将C#中的命令行参数传递给外部exe
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();
我已经尝试过写process.StandardInput我打电话的Process.Start(后),但使用调试器时,外部程序是一段已经结束(HasExited ==真)。
任何人都可以解释我可以如何将这个特殊的“<”“>”参数传递给程序吗?
最好的问候!
顺便说一下,我检查了多次路径,他们是正确的。
如果您已经阅读其他线程,你为什么不读[回答您的问题(http://stackoverflow.com/a/850856/880802)呢?提示:这是第一段。为什么'<' and '>'不起作用在最后一个解释。 – Nuffin
您的'<'之后的所有内容不再是您的应用程序的参数。那些是命令行处理器的“开关”(可以这么说)。 – user7116
[在使用System.Diagnostics.Process的命令行上的文件中管道]的可能重复(http://stackoverflow.com/questions/850802/piping-in-a--file-on-the-command-line-使用系统诊断进程) –