将stderr编译输出复制到单独的文件中

时间:2013-03-07 09:19:55

标签: windows batch-file makefile cmd

我有一个项目,使用 make 构建,我希望增加可能性 分析警告信息的整体状态。

我的想法是更改 make 规则,以便在完全重建期间将 stderr 编译输出复制到单独的文件中。意味着每次完成所有时,所有输出都将打印在控制台中,此外 stderr 输出将复制到单独的文件中。

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

问题是如何将stderr输出重复(不重定向)到单独的文件中?意味着我应该如何更改 Makefile 中的所有目标?

我知道如何重定向 stderr 输出( make all 2> warning_report.txt ),但它不是 我需要的。警告消息应该在主控制台输出和警告文件中。

我使用 Windows 7 作为工作环境,但我之前没有处理过 Windows 命令行或批处理文件。

提前致谢。

编辑:

在我的情况下,最终解决方案如下所示:

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

在这种情况下脚本 tee.bat ,用 JScript Windows 编写,我从指定的link获取PA(谢谢)。

如何交换,我是从herehere获取的。

2 个答案:

答案 0 :(得分:0)

我不了解Windows,但您可以在Linux中使用tee命令执行此操作。 tee用于将STDOUT重定向到文件以及控制台,这样您就可以利用它并检查是否可以解决问题。

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

STDERR重定向到STDOUT,将STDOUT重定向到stdout.log,并将所有STDERR复制到stderr.log并在控制台上回显为好。

但解决方案尚未完成。 STDOUT未在控制台上打印,只会复制到stdout.log。尝试使用您将获得解决方案的命令。

答案 1 :(得分: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导出到文件,然后显示该文件的内容。

希望有所帮助。