4

那就是在控制台上显示两个流,但以某种方式将它们与另一个流区分开来。

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

c:\>command.exe

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

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

4

1 回答 1

2

如果目的是将错误消息与同一屏幕中的正常输出区分开来,则可以通过以下技巧来完成:

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

这样,错误消息就会出现在红色背景上的黄色行号之前。

以前的答案摘自:批处理 - 如何从批处理脚本本身重定向标准错误和标准输出?

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

于 2013-05-27T19:21:21.460 回答