2010-12-07 87 views
2

我使用msbuild「Exec」任務運行命令。不過,我不希望命令生成的stdio輸出出現在控制檯中,是否有壓制它?使用msbuild中的Exec任務抑制輸出

也許沿着使用Exec任務來調用「cmd.exe」與我的命令exe文件的行是一個目標,然後使用「>」重定向到其他地方的輸出。 (但是我無法得到這個解決方案的工作)。

<Exec Command="cmd.exe sqlplus.exe $(someCommandSpecificSettings) &lt; test.txt"/> 

任何建議,讓我的示例工作或替代方案?

回答

1

好了,想通了...... CMD.EXE所需的A/C參數爲我想要的東西,即工作:

而且,它應該是&gt;代替&lt;

<Exec Command="cmd.exe /c sqlplus.exe $(someCommandSpecificSettings) &gt; test.txt"/> 
0

試試這個:

<Exec Command="cmd.exe sqlplus.exe $(someCommandSpecificSettings) &lt; test.txt >nul"/> 
+0

不,不起作用..我仍然得到一個「系統找不到指定文件」消息。 – vicsz 2010-12-07 20:15:18

+0

該消息告訴你它找不到'test.txt'作爲輸入,因爲你得到了&lt錯誤。 – 2010-12-08 14:32:16

7

只是爲了您的信息:

  • >(&gt;)輸出重定向到你後面指定的文件(覆蓋如果需要的話)
  • >>追加輸出到你後(未覆蓋)指定的文件
  • <標準輸入重定向到您的命令(基本上將文件的內容傳遞給您的命令後)

使用您的代碼,您創建(一次)並每次替換test.txt文件。您可以使用NUL來代替使用文件名,這意味着無法重定向。這將無法創建文件(這可能是在某些情況下,巨大的):

<Exec Command="cmd.exe /c sqlplus.exe $(someCommandSpecificSettings) &gt; NUL"/> 

如果你想重定向錯誤,以及,你可使用2>,如:

<Exec Command="cmd.exe /c sqlplus.exe $(someCommandSpecificSettings) &gt; NUL 2$gt;errors.txt"/> 

還要注意的是你可以使用2> & 1將stderr重定向到stdout,因此> NUL 2>&1會將所有內容重定向到任何地方。

希望這闡明你的思想^^

0

以抑制來自Exec任務或從ToolTask繼承是降低產量的重要性,任何任務標準輸出和標準錯誤輸出的最好方法。這樣,如果你正在調試你的構建,這些輸出將不會完全隱藏,因爲你將它們重定向到nul。

<Exec Command="sqlplus.exe" StandardOutputImportance="low" StandardErrorImportance="low"/>