【问题标题】:is there a way to distinguish stderr in console output?有没有办法在控制台输出中区分标准错误?
【发布时间】:2013-05-21 17:18:38
【问题描述】:

这是在控制台上显示两个流,但以某种方式区分另一个。

通常情况下,我不知道哪些行是标准错误,它们与正常输出混合。如果我将它重定向到一个文件,那么我不知道与正常输出相关的错误何时发生。那么有没有办法让来自 stderr 的每一行都有一些指示符,例如开头的字符串,如下所示:

c:\>command.exe

normal output
normal output
normal output
stderr: error message
normal output
stderr: error message
normal output

这在编译器/make 中尤其存在问题,它会喷出大量信息并混合这两个流。我知道我可以使用 unix sed 在每一行文本前加上给定的字符串,但我不知道如何将它与主程序一起使用。如果我加入两个流字符串将被添加到每一行。如果我将 stderr 重定向到文件,它将不会显示在控制台上 + 它将脱离 stdout 的上下文。

【问题讨论】:

  • 查看 JPsoft Take Command Console 命令解释器是否可以为 STDERR 输出着色。

标签: batch-file stderr windows-console


【解决方案1】:

如果目的是在同一屏幕上区分错误消息和正常输出,那么可以通过这个技巧来完成:

anycompiler params ... 2>&1 1>&3 | findstr /N /A:4E "^"

这样,错误消息前面会出现一个红色背景上的黄色行号。

上一个答案摘自:Batch - How can I redirect stderr and stdout from within the batch script itself?

如果您将前一行的两个输出重定向到磁盘文件,STDERR 输出前面将有一个行号。

【讨论】:

  • 这会等到第一个进程 (anycompiler params ...) 退出吗?有没有办法让数据不断流入管道,两个进程同时运行?例如 [new]line-buffered,还是以某种缓冲速率(即 buffer=4096)?
猜你喜欢
  • 2014-05-23
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 1970-01-01
  • 2013-05-21
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多