从命令提示符重定向错误消息:STDERR/STDOUT

本文介绍如何从命令提示符重定向错误消息。

原始产品版本: Visual C++
原始 KB 编号: 110930

总结

使用 > 符号从应用程序重定向输出时,错误消息仍会打印到屏幕。 这是因为错误消息通常发送到标准错误流而不是标准传出流。

控制台(命令提示符)应用程序或命令的输出通常发送到两个单独的流。 常规输出将发送到标准输出(STDOUT),错误消息将发送到标准错误(STDERR)。 使用 > 符号重定向控制台输出时,只会重定向 STDOUT。 若要重定向 STDERR,必须指定 2> 重定向符号。 这会选择 STDERR 的第二个输出流。

示例

命令 dir file.xxx (其中 file.xxx 不存在)将显示以下输出:

驱动器 F 中的卷是 Candy Cane Cane 卷序列号为 34EC-0876
找不到文件

如果将输出重定向到使用 dir file.xxx > nulNUL 设备,仍会看到错误消息:

找不到文件

若要将错误消息重定向到 NUL,请使用以下命令:

dir file.xxx 2> nul

或者,可以将输出重定向到一个位置,并将错误重定向到另一个位置。

dir file.xxx > output.msg 2> output.err

可以使用命令将 STDERR 的输出重定向到 &1 STDOUT,然后将 STDOUT 的输出发送到文件,将错误和标准输出打印到单个文件:

dir file.xxx 1> output.msg 2>&1