当我的批处理脚本运行时,我希望任何错误都显示在命令提示符上,以便用户可以立即看到它,同时抑制显示的所有标准输出。
但我希望将所有内容输出到日志文件。我该怎么做?
换句话说,
+---------+
| | --- stderr ---------> Console
| Program |
| | --- stdout/err -----> Log file
+---------+
答案1
有多种版本tee
可供下载(或使用 VBS 或 JScript 创建),您可以将 stderr 重定向到 stdout 并通过 tee 传输所有内容。但这样一来,您就会将 stdout 和 stderr 都发送到控制台和文件。
我认为不可能将两者都发送到一个文件,而选择性地将 stderr 发送到控制台,除非所有错误的内容中都有一些特殊的东西可以用来识别错误。我怀疑是否有一致的唯一错误标识符,但如果有,解决方案可能看起来像这样:
yourScript 2>&1 | tee output.log | find "Error:"
答案2
如果你没有tee
:
yourScript 2>&1 > output.log & type output.log | find "Error:"