如何在Powershell中搜索文件中的内容



我想制作一个动态函数,在输入的文件中搜索请求的$ErrorCode,并最终将有错误的文件复制到另一个文件夹。

现在,我的代码只获取一个文件,并返回$Error_code的查找位置。我想搜索多个文件,并返回具有$ErrorCode的文件的名称。

function SearchError{
Param (
[Parameter (Mandatory=$true)] [STRING] $SourcePath,
[Parameter (Mandatory=$true)] [STRING] $SourceFile,
[Parameter (Mandatory=$true)] [STRING] $ErrorCode,
[Parameter (Mandatory=$true)] [STRING] $FileType
# [Parameter (Mandatory=$true)] [STRING] $DestPath

)  
$TargetPath = "$($SourcePath)$($SourceFile)"
#Return $TargetPath
$DestinationPath = "$($DestPath)"
#Return $DestinationPath 

#foreach($error in $TargetPath) {
Get-ChildItem $TargetPath | Select-String -pattern $ErrorCode 
}
SearchError 
  • Select-String的输出对象(类型为[Microsoft.PowerShell.Commands.MatchInfo](具有反映输入文件路径的.Path属性。

  • -List开关添加到Select-String会使其在文件中的第一个匹配项之后停止搜索,因此对于每个至少找到1个匹配项的文件,您将获得恰好1个输出对象。

因此,以下仅输出其中找到至少1个匹配的输入文件的路径:

Get-ChildItem $TargetPath |
Select-String -List -Pattern $ErrorCode | ForEach-Object Path

注意:-Pattern支持正则表达式模式的数组,因此如果将$ErrorCode参数定义为[string[]],则具有任何一个模式的文件都将匹配;使用-SimpleMatch而不是-Pattern文字子字符串进行搜索。


Re:

最终将出现错误的文件复制到另一个文件夹

只需将| Copy-Item -Destination $DestPath附加到上述命令即可。

回复:

我想搜索多个文件

根据需要,您可以将$SourcePath$SourceFile参数设置为数组值([string[]](和/或将通配符表达式作为参数传递。

相关内容

  • 没有找到相关文章

最新更新