2014-03-05 100 views
1

我有一個批處理文件,我希望獲取findstr命令的輸出並將其重定向到一個文件。如何將findstr的輸出重定向到一個文件?

Type "%CH% log.txt" | Findstr /v "%lastMod%" > "%CH% log.txt" 

變量CH的lastmod已經定義,每當我刪除了重定向操作它輸出到正是我希望它的屏幕輸出。 Type "%CH% log.txt" | Findstr /v "%lastMod%"每當我添加重定向操作符時,它不會向我的文件輸出任何內容(文件爲空)。我試圖通過使用像findstr,重定向,文件和無證findstr,沒有運氣的關鍵字找到答案。我想知道是否有人知道這個答案。

回答

3

您的輸出文件與您的輸入文件相同。由於您沒有使用附加模式,因此在TYPE命令有機會輸出原始內容之前,它會有效地清除文件內容。你的FINDSTR從來沒有看到任何輸入!

解決方法是重定向到一個新的臨時文件,然後在完成時將臨時文件移動到原始名稱。

type "%CH% log.txt" | findstr /v "%lastMod%" > "%CH% log.txt.new" 
move /y "%CH% log.txt.new" "%CH% log.txt" >nul 

你可以通過讓FINDSTR簡化了一下直接讀取文件

findstr /v "%lastMod%" "%CH% log.txt" > "%CH% log.txt.new" 
move /y "%CH% log.txt.new" "%CH% log.txt" >nul 
相關問題