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

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

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

摘要

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

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

示例

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

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

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

找不到文件

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

dir file.xxx 2> nul

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

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

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

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