这是在控制台上显示两个流,但不知何故彼此区分。
通常我不知道哪些线是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中脱离上下文。
答案 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输出前面会有一个行号。