可能重复:
Redirect Standard Output Efficiently in .NET
Capturing console output from a .NET application (C#)
我知道如何执行这样的事情:
SomeEXE inputfile.txt
在命令提示符下通过C#。
我遇到的问题是SomeEXE打开另一个命令提示符,它在输出给出inputfile.txt时输出。
通常可以获得这些输出吗?感谢。
这是我目前的代码:
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C SomeEXE inputfile.txt";
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
process.StartInfo = startInfo;
process.Start();
// Now use streams to capture the output
StreamReader outputReader = process.StandardOutput;
process.WaitForExit();
String line = outputReader.ReadToEnd();
答案 0 :(得分:1)
ProcessStartInfo processStartInfo = new processStartInfo("SomeEXE", "inputfile.txt");
processStartInfo.UseShellExecute = false;
processStartInfo.ErrorDialog = false;
// Here is where you grab the output:
processStartInfo.RedirectStandardOutput = true;
Process process = new Process {
StartInfo = processStartInfo
};
process.Start();
// Now use streams to capture the output
StreamReader outputReader = process.StandardOutput;
process.WaitForExit();
现在,您可以根据需要阅读outputStream
。
我猜这就是你的意思。另外,以下是RedirectStandardOutput
此外,如果您知道生成的文件的路径(假设SomeEXE
写入另一个文件),您可以在SomeEXE
执行后使用File.Open
访问其内容(请记住,等到SomeEXE
之后,{{1}}可能仍然有文件处理,使其难以阅读。