2016-03-03 70 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