2016-03-03 96 views
0

有沒有辦法將CMD標準輸出流暢地流到PowerShell到Select-String流CMD輸出到選擇字符串

我已經嘗試了所有可以找到的方法,但是我發現每種方法都會將信息存儲在變量中,然後再將它與管道配合使用。它必須是一個流,因爲標準輸出的大小可能超過20GB,並且在進程崩潰之前最終導致內存不足異常。

這是我一直在使用該命令:

gunzip.exe -c "*_2015-06-05_*" |powershell.exe "& {$input | select-string -pattern '1292681581' | Out-File C:\Users\xadministrator\desktop\test2.txt -append}" 
+0

當你將它直接管道到Select-String時會發生什麼? 'gunzip.exe -c「_2015-06-05_ *」| Select-String -Pattern'1292681581'| Out-File:...'編輯:哦,你從CMD本身運行這個。對。 –

回答

2
powershell.exe "& {gunzip.exe -c '*_2015-06-05_*' | select-string ...}" 

你也應該能夠做到這一點完全在CMD(使用findfindstr的過濾),如果你發現PowerShell的速度太慢:

gunzip.exe -c "*_2015-06-05_*" | find "1292681581" >> "C:\Users\xadministrator\desktop\test2.txt" 

然而,處理20 GB的數據是要花費一些時間兩種方式。

+0

* facepalm *,我不敢相信我沒有試過這個,唯一的問題是它的速度非常慢。 – user1451070

+0

不幸的是,我試圖擺脫一個腳本winGrep在Powershell腳本中的依賴,所以我可以添加多任務功能,所以必須在PowerShell中這樣做。 – user1451070