You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell在多个Zip文件中查找含指定关键词的文件?

在Zip文件中批量查找含指定关键词的文件

直接用PowerShell结合.NET原生类就能实现需求,以下是完整脚本和说明:

完整脚本

# 配置参数
$searchPath = '\\fileserver\path\path2\path3\path4\'
$keyword = "要搜索的关键词" # 替换成你的目标关键词

# 加载.NET压缩类(PowerShell 5.1及以上默认已包含)
Add-Type -AssemblyName System.IO.Compression.FileSystem

# 遍历所有递归找到的Zip文件
Get-ChildItem -Path $searchPath -Recurse -Filter "*.zip" -File | ForEach-Object {
    $zipFullPath = $_.FullName
    try {
        # 打开Zip文件(只读模式)
        $zipArchive = [System.IO.Compression.ZipFile]::OpenRead($zipFullPath)
        
        # 筛选Zip中文件名包含关键词的文件
        $matchedFiles = $zipArchive.Entries | Where-Object {
            # 若要忽略大小写,改用 $_.Name -like "*$keyword*"
            $_.Name.Contains($keyword) -and !$_.PSIsContainer
        }
        
        # 输出匹配结果
        if ($matchedFiles) {
            Write-Host "在Zip文件中找到匹配项:$zipFullPath"
            $matchedFiles | ForEach-Object {
                Write-Host "  - $($_.FullName)"
            }
        }
        
        # 关闭Zip归档
        $zipArchive.Dispose()
    }
    catch {
        Write-Warning "无法读取Zip文件 $zipFullPath : $_"
    }
}

关键说明

  • 筛选Zip文件:用-Filter "*.zip"直接过滤出所有Zip文件,比后续再筛选更高效
  • 读取Zip内容:用[System.IO.Compression.ZipFile]::OpenRead()以只读模式打开Zip,避免修改原文件
  • 关键词匹配:
    • 默认用Contains()是区分大小写的匹配
    • 如果需要忽略大小写,把判断条件改成$_.Name -like "*$keyword*"即可
  • 错误处理:加入try-catch捕获损坏的Zip文件或权限问题,避免脚本中断
  • 排除文件夹:!$_.PSIsContainer确保只筛选文件,不包含Zip内部的文件夹

内容的提问来源于stack exchange,提问作者Idkmanidk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:25:51