如何使用输入参数执行perl脚本并将结果输出到C#中的文件

时间:2011-05-03 18:25:36

标签: c# perl

我想在我的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();

2 个答案:

答案 0 :(得分:1)

我已回答a coupletimes before类似问题:

这是我之前的回答。只需替换代表即可写入文件。

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”。

答案 1 :(得分:0)

程序是否执行?我的意思是只是输出文件没有创建或进程没有启动?顺便说一下,您需要在参数字符串之前转义那些反斜杠或使用@。

重定向不是参数,所以我认为你不能在参数参数中指定“> C:\ mydir \ test.txt”。请尝试使用Process.StandardOutput代替。或者你也可以尝试将输出文件作为perl脚本中的参数,并使perl代码写入文本文件。