2013-03-07 48 views
0

我有一个项目,该项目使用使生成,我想添加可能性 来分析警告消息的总体状态。将stderr编译输出复制到分隔文件中

我的想法是改变期间完全重建做出规则,以复制标准错误编译输出为单独的文件。意味着每次都会使完成,所有的输出将被打印在控制台中,另外stderr输出将被复制到单独的文件中。

此警告报告文件将被添加到存储库中,以便我可以比较存储库中存在的警告和本地警告。

问题是如何DUPLICATE(不重定向)stderr输出到单独的文件?意思是我该如何改变全部目标Makefile

我知道如何重定向标准错误输出(使所有2> warning_report.txt),但它不是 我需要什么。警告消息应该在主控制台输出和警告文件中。

我用的Windows 7的工作环境,但我没有用之前的Windows 命令行或批处理文件的任何交易。

在此先感谢。

编辑:

在我的情况下最终的解决方案看起来如下:

make all 3>&1 1>&2- 2>&3- | tee.bat warning_report.txt

在这种情况下,脚本tee.bat,这是写在JScript中的Windows,我从PA指定的link拿下(谢谢)。

如何交换,我从herehere

+0

在SO看到此前一个问题http://stackoverflow.com/questions/10711839/using-a-custom-tee-command-for-bat-file/10719322#10719322 – 2013-03-07 13:26:53

+0

为什么你不把它重定向到一个文件然后显示文件内容? – 2013-03-07 21:27:37

+0

由于整个项目的编译时间约为5分钟。 – yurko 2013-03-07 21:48:36

回答

0

我不知道windows,但你可以在Linux中使用tee命令。 tee用于将STDOUT重定向到文件以及控制台,以便您可以充分利用它并检查是否可以解决您的问题。

make all 2>&1 1>stdout.log | tee stderr.log

重定向到STDERRSTDOUT,重定向到STDOUTstdout.log所有STDERR被复制到stderr.log ANS在控制台上回荡为好。

但是解决方案尚未完成。 STDOUT未在控制台上打印,但仅复制到stdout.log。尝试玩弄你将得到解决方案的命令。

0

我只是重新读你的问题,并决定我会试着回答它。

下面是导出stderr并显示它的片段。

@echo off 
if exist stderr.error del stderr.error 
this_is_not_a_command 2>stderr.error 
if exist stderr.error type stderr.error & del stderr.error 

这会将stderr导出到文件,然后显示该文件的内容。

希望有所帮助。

+0

谢谢你的帮助。 由于现在我无法访问我的电脑,我现在无法尝试。 我会在星期一尝试。 – yurko 2013-03-08 22:37:45

+0

它是怎么回事?它有帮助吗? – 2013-03-12 10:42:12

+0

我试图使用这个,但最终我使用了上面解释的解决方案(请参阅**编辑的** [上面](http://stackoverflow.com/q/15267261/1039412))。 – yurko 2013-03-12 11:03:11

相关问题