2013-10-25 20 views
0

我使用findstr遞歸搜索幾個大型目錄,查找與searchList.txt中任何行匹配的任何行。如何在PowerShell中使用/ G參數調用findstr

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

我想要做同樣的事情在PowerShell腳本中,通過調用findstr命令或完全在PowerShell中做一些事情。遍歷searchList.txt中的每個項目,然後查看所有目錄太慢。

如何在Powershell中調用上面的行,或者做同樣的事情?

在此先感謝。

回答

2

你可以在PowerShell中調用它,方法是打開一個PowerShell提示符,輸入它並敲擊[ENTER]

我沒有看到任何東西阻止您從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 '|') 

,但不包括二進制文件將是一個痛苦的,因爲據我所知沒有內置的方式來檢查文件是否爲文本或二進制。如果您可以依賴擴展名,則可以在Get-ChildItem之後添加-Filter *.txt

底線:這不值得。 選擇字符串在匹配模式方面更具通用性,因爲您可以使用.NET正則表達式,但是如果要查找的模式在findstr的正則表達式能力有限,那麼最好使用findstr執行此任務,並且您的腳本將是可移植的,因爲它始終包含在Windows中。

相關問題