以前发了一个用WinAPI合并stderr到stdout的方法,但是实际上不用这么麻烦,直接使用下面的命令格式就可以了。
cmd /c 命令 2>&1
比如如果运行cmd /c dir aaa会出现错误消息File Not Found,但是由于是输出到stderr的,C#的Process类并不能将它与stdout合并显示出来:
但是如果运行cmd /c dir aaa 2>&1,就可以将stderr和stdout合并了:
private void button1_Click(object sender, EventArgs e)
{
Process proc = new Process();
proc.StartInfo.FileName = "cmd";
proc.StartInfo.Arguments = "/c dir aaa 2>&1";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
this.textBox1.Text = proc.StandardOutput.ReadToEnd();
}