使用select字符串从1000多个文件中输出列表



我正试图从一个文本文件中获取一个特定的字符串,并将其和文件名输出到一个单独的txt文件中。我尝试了以下操作,但收到一条错误消息。我一直在寻找答案,但没有找到。感谢您的帮助。我应该补充一点,我是Powershell的新手。

Select-String -Path C:temptest1.txt -Pattern 'batch3'|ForEach-Object {   
@' File name - {0} {1}
..................... '@ -f $_.Name, (Get-Content $_.FullName -Raw) }
| Out-File 'C:temptest_output.txt'

如果我用Select-String代替Get-Content,它会起作用。问题是它占用了文件的全部内容,而这不是我所需要的。

错误消息:

获取内容:无法将参数绑定到参数"Path",因为它为null。第6行字符:29+'@-f$.Name,(获取内容$.FullName-原始(+~~~~~~~~~~~+CategoryInfo:InvalidData:(:([Get-Content],ParameterBindingValidationException+FullyQualifiedErrorId:ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.GetContentCommand

Select-String不输出属性FullName。但是,存在Path属性。试试这个:

(Get-Content $_.Path -Raw)

这将修复错误,但如果您只想输出一行您找到的字符串,而不是整个文件内容,请删除Get-Content并尝试以下操作:

Select-String -Path C:temptest1.txt -Pattern 'batch3'|ForEach-Object {   
@' File name - {0} {1}
..................... '@ -f $_.Filename, $_.Line }
| Out-File 'C:temptest_output.txt'

最新更新