抱歉,标题晦涩难懂,这是我的问题以及我想做什么。
我的文件:
\\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
应该将这些值转换为字符串。希望所有帮助!
最佳答案
从您的代码中删除| Out-String
部分,它将按照您的预期工作。这是因为Get-Content
将在$Keywords
中创建一个字符串数组,并且-Pattern
参数接受字符串数组输入:
除非您希望将关键字解释为RegEx模式,否则还应使用-SimpleMatch
。
Select-String -Path '\\mydir\*.txt' -Pattern (Get-Content -Path '\\mydir\keywords.txt') -SimpleMatch