如何在powershell中使用/ G参数调用findstr

时间:2013-10-25 20:29:51

标签: powershell findstr

我使用findstr递归搜索几个大目录,查找与searchList.txt中任何一行匹配的任何行。

findstr /SNIP /D:"C:\search Dir1;C:\search Dir2" /G:C:\searchList.txt *

我想在Powershell脚本中做同样的事情,通过调用findstr命令或完全在Powershell中执行某些操作。迭代searchList.txt中的每个项目然后查看所有目录太慢了。

如何在Powershell中调用上面的行,或者做同等的操作?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以通过打开PowerShell提示,输入并点击 [ENTER] 在PowerShell中调用它。

我没有看到任何阻止您从PowerShell运行该命令的内容。 findstr 不是本机cmd命令,它是与Windows捆绑在一起的独立.exe文件,位于默认系统路径(System32目录)中,因此可以从PowerShell获得。

您可以在原生PowerShell中执行此操作,但这将是一个不必要的麻烦。你必须做这样的事情

echo 'C:\search Dir1' 'C:\search Dir2' | Get-ChildItem | Select-String ((Get-Content C:\searchlist.txt) -join '|')

但是排除二进制文件会很麻烦,因为AFAIK没有内置的方法来检查文件是文本还是二进制文件。如果您可以依赖此扩展程序,则可以在-Filter *.txt之后添加Get-ChildItem

底线:这不值得。 Select-String 在匹配模式方面更加通用,因为您可以使用.NET正则表达式,但是如果要查找的模式位于 findstr 的有限正则表达式中功能方面,您最好使用 findstr 执行此任务,并且您的脚本将是可移植的,因为它始终包含在Windows中。