2

抱歉标题晦涩难懂,这是我的问题和我想做的事情。

我的文件:

\\mydir\keywords.txt
\\mydir\textfile1.txt
\\mydir\textfile2.txt
\\mydir\textfile3.txt
etc

我有“keywords.txt”,其中包含很多我想与“textfile1.txt”匹配的关键字(字符串)等等,并收到包含匹配项的文件名的答案。

$keywords = Get-Content -Path '\\mydir\keywords.txt' | Out-String
Select-String -Path '\\mydir\*.txt' -Pattern $keywords

即递归搜索\mydir\ 中的所有.txt 文件,并使用文件“keywords.txt”的内容作为关键字进行搜索。

Get-Content默认情况下将值作为数组返回,Out-String应将其转换为字符串。

感谢所有帮助!

4

1 回答 1

3

从您的代码中删除该| Out-String部分,我相信它会按照您的意图工作。这是因为Get-Content将创建一个字符串数组,$Keywords并且-Pattern参数接受字符串数组输入:

-SimpleMatch除非您希望您的关键字被解释为正则表达式模式,否则您也应该使用。

Select-String -Path '\\mydir\*.txt' -Pattern (Get-Content -Path '\\mydir\keywords.txt') -SimpleMatch
于 2017-08-09T13:16:26.660 回答