2014-01-30 191 views
0

在Windows Server 2003中使用以下命令獲取當前在特定目錄中創建的文件中的字符串匹配行。findstr或grep輸出到文件

forfiles -p D:\ -m *.1 -d +0 -c "cmd /c findstr /i /c:\"Hey Hi\" @FILE" >> txt5.txt 
or 
forfiles -p D:\ -m *.1 -d +0 -c "cmd /c grep \"Hey Hi\" @FILE" >> txt5.txt 

Geeting錯誤「FINDSTR:寫錯誤」和「grep的寫入錯誤壞文件描述符」兩個命令。所以基本上,這些命令可以工作,即在屏幕上顯示輸出,但無法將輸出重定向到文件。

雖然用戶在不同情況下報告了相同的錯誤,但我沒有找到合適的解決方案。任何幫助表示讚賞。提前致謝!

+0

它作爲批處理工作嗎?即'processX.bat >> txt5.txt'或'call processX.bat >> txt5.txt' –

+0

@AustinSalonen我將這些命令放在process.bat/process.cmd中。現在我從另一個批處理文件調用process.bat,即process >> txt5.txt。它將命令寫入txt5.txt,但不輸出! – user841311

+0

@KenWhite不知道爲什麼,但刪除cmd/c就像你的命令做的那樣。錯誤消失了,我現在可以將輸出寫入文件。您可以刪除您的評論並將其粘貼爲答案,以便我可以確認。謝謝! – user841311

回答

1

您應該能夠刪除cmd /c;我沒有看到任何理由,您需要爲findstr調用打開的命令shell的新副本。

這正常工作對我來說在命令提示符下:

forfiles -m t*.xml -d +0 -c "findstr /i "Item" @file" >> out.txt. 

它產生的out.txt文件,其中包含正確的內容相匹配的搜索條件。