有没有办法区分控制台输出中的stderr?

时间:2013-05-26 20:01:07

标签: batch-file stderr windows-console

这是在控制台上显示两个流,但不知何故彼此区分。

通常我不知道哪些线是stderr它们与正常输出混合。如果我将其重定向到文件,那么我不知道何时与正常输出相关的错误发生了。那么是否有一种方法可以使来自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中脱离上下文。

1 个答案:

答案 0 :(得分:2)

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

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输出前面会有一个行号。