0

可能重复:
在 .NET 中有效地重定向标准输出
从 .NET 应用程序 (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();
4

1 回答 1

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写入另一个文件),您可以在执行File.Open后使用它来访问其内容SomeEXE(请记住等到之后,否则SomeEXE可能仍然对文件有句柄,因此很难阅读)。

于 2012-09-11T14:37:36.007 回答