如何在c#中执行带有输入参数的perl脚本并将结果输出到文件中
本文关键字:脚本 perl 结果 输出 文件 参数 执行 行带 输入 | 更新日期: 2023-09-27 17:54:22
我想在我的c#代码中执行perl脚本并将结果输出到文件。perl脚本将接受一个二进制文件名作为输入参数,我希望将结果重定向到一个文本文件。我的c#代码中有以下内容,但没有创建输出文件test.txt。如果你知道问题所在,请告知:
private Process myProcess = null;
myProcess = new Process();
myProcess.StartInfo.FileName = "perl.exe";
myProcess.StartInfo.Arguments = "C:''mydir''myPerl.pl C:''mydir''myFile.DAT > C:''mydir''test.txt";
myProcess.Start();
我之前已经回答过几次类似的问题:
这是我之前的答案。只需将委托替换为写入文件即可。
ProcessStartInfo processInfo = new ProcessStartInfo("Myexe.exe");
processInfo.ErrorDialog = false;
processInfo.UseShellExecute = false;
processInfo.RedirectStandardOutput = true;
processInfo.RedirectStandardError = true;
Process proc = Process.Start(processInfo);
// You can pass any delegate that matches the appropriate
// signature to ErrorDataReceived and OutputDataReceived
proc.ErrorDataReceived += (sender, errorLine) => { if (errorLine.Data != null) Trace.WriteLine(errorLine.Data); };
proc.OutputDataReceived += (sender, outputLine) => { if (outputLine.Data != null) Trace.WriteLine(outputLine.Data); };
proc.BeginErrorReadLine();
proc.BeginOutputReadLine();
proc.WaitForExit();
在您的特殊情况下,不要忘记从命令行中删除" > C:''mydir''test.txt
"。
程序是否执行?我的意思是,只是输出文件没有被创建或进程没有开始?顺便说一下,您需要转义这些反斜杠或在参数字符串之前使用@。
重定向不是一个参数,所以我认为你不能在参数中指定"> C:'mydir'test.txt"。尝试使用Process。StandardOutput代替。或者您也可以尝试将输出文件作为perl脚本中的参数,并让perl代码编写文本文件。