2013-03-07 46 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

相關問題