批处理文件 – 有没有办法区分控制台输出中的stderr?

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

通常是我不知道哪些线是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中脱离上下文.

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

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输出将以行号开头.

点赞