Batch file 有没有办法在控制台输出中区分stderr?

Batch file 有没有办法在控制台输出中区分stderr?,batch-file,stderr,windows-console,Batch File,Stderr,Windows Console,也就是说,在控制台上显示两个流,但以某种方式将它们区别开来 通常情况下,我不知道哪些行是标准的,它们与正常输出混合在一起。如果我将它重定向到一个文件,那么我不知道相对于正常输出,错误是什么时候发生的。那么,有没有一种方法可以让来自stderr的每一行都有一些指示符,比如开头有一个字符串,如下所示: c:\>command.exe normal output normal output normal output stderr: error message normal output st

也就是说,在控制台上显示两个流,但以某种方式将它们区别开来

通常情况下,我不知道哪些行是标准的,它们与正常输出混合在一起。如果我将它重定向到一个文件,那么我不知道相对于正常输出,错误是什么时候发生的。那么,有没有一种方法可以让来自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 "^"
这样,错误消息前面会出现一个红色背景上的黄色行号

先前的答案摘自:


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

查看JPsoft Take Command Console命令解释器是否可以为STDERR输出着色。这是否要等到第一个进程(
anycompiler params…
)退出?有没有一种方法可以使数据连续地流入管道,两个进程同时运行?例如,缓冲[新]行,或以某种缓冲速率(即缓冲=4096)?