我想在我的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();
答案 0 :(得分:1)
我已回答a couple的times 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代码写入文本文件。