命令提示符c#

时间:2012-09-11 14:32:21

标签: c# .net

  

可能重复:
  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();

1 个答案:

答案 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}}可能仍然有文件处理,使其难以阅读。