将 stderr 和 stdout 都输出到文件,并且只将 stderr 输出到命令提示符

use*_*446 8 windows command-line

当我的批处理脚本运行时,我希望在命令提示符上显示任何错误,以便用户立即看到它,同时抑制显示的所有标准输出。

但我希望所有内容都输出到日志文件中。我该怎么做呢?

换句话说,

+---------+
|         | --- stderr ---------> Console
| Program |
|         | --- stdout/err -----> Log file
+---------+
Run Code Online (Sandbox Code Playgroud)

dbe*_*ham 2

tee可以下载(或使用 VBS 或 JScript 创建)各种版本,并且您可以将 stderr 重定向到 stdout 并通过 tee 传输所有内容。但随后您将同时将 stdout 和 stderr 发送到控制台和文件。

我相信不可能将两者都发送到文件,但有选择地将 stderr 发送到控制台,除非所有错误的内容中有一些特殊的内容可用于识别错误。我怀疑是否存在一致的唯一错误标识符,但如果存在,解决方案可能如下所示:

yourScript 2>&1 | tee output.log | find "Error:" 
Run Code Online (Sandbox Code Playgroud)