2010-10-22 20 views
1

好吧,這裏有一個棘手的問題 - 我捕獲了cmd.exe的輸出就好了,從管道讀取yadda yadda yadda,但是cmd.exe批處理文件中的一行有大膽做:在重定向後繼續捕獲輸出

DIR err.txt> ZZ

..即,它重定向dir命令的輸出,這是內部cmd.exe的一個內部命令。

問題是,這打破了我對輸出的捕獲!此後,我無法從cmd.exe獲取任何內容。

顯然重定向標準輸出,它關閉它,或者以某種方式打破它,並使一個新的標準輸出重定向輸出。它永遠不會恢復舊的stdout句柄。

有關如何跟蹤此輸出的任何想法?

回答

0

您應該在單獨的過程中撥打dir err.txt。嘗試call dir err.txt >zz

+0

'調用'不會使用單獨的進程。在這種情況下,你需要'cmd/c「dir err.txt> zz」'。 – Joey 2010-10-23 11:31:12

0

如果允許修改批處理文件,則可以用TEE命令替換內部重定向。

有幾個端口到Windows(只是谷歌「windows command tee」)。

維基百科: 在計算中,三通是在各種命令行解釋器(殼)的命令 如Unix殼,4DOS/4NT和Windows PowerShell,該顯示或管道 命令和複印件的輸出它變成一個文件或變量