将一个exe的输出重定向到另一个exe:C#

时间:2011-10-16 23:49:08

标签: c# redirect

我创建了两个简单的.exe文件。其中一个在运行时获取一个filename参数,并将该文件的内容读取到控制台。另一个等待其控制台的输入,然后读取它;现在它只需打印到控制台,但最终我必须将读入的文本重定向到新的txt文件。我的问题是,如何将第一个exe的输出重定向到可以读入的第二个exe的控制台?

提前感谢您提供的任何帮助! :)

-Chris

2 个答案:

答案 0 :(得分:4)

您可以使用管道重定向运算符对命令行执行某些操作:

ConsoleApp1.exe | ConsoleApp2.exe

管道操作员将控制台输出从第一个应用程序重定向到第二个应用程序的标准输入。您可以找到更多信息here(该链接适用于XP,但规则也适用于Windows Vista和Windows 7)。

答案 1 :(得分:2)

来自MSDN

// Start the child process.
 Process p = new Process();
 // Redirect the output stream of the child process.
 p.StartInfo.UseShellExecute = false;
 p.StartInfo.RedirectStandardOutput = true;
 p.StartInfo.FileName = "Write500Lines.exe";
 p.Start();
 // Do not wait for the child process to exit before
 // reading to the end of its redirected stream.
 // p.WaitForExit();
 // Read the output stream first and then wait.
 string output = p.StandardOutput.ReadToEnd();
 p.WaitForExit();

你可以逐行阅读:

///...
string output;
while( ( output = p.StandardOutput.ReadLine() ) != null )
{
    Console.WriteLine(output);
}
p.WaitForExit();