遍历备份 Chrome | Edge 浏览器插件目录

遍历指定的浏览器插件目录,读取每个插件的配置文件以提取真实的插件名称 和版本号 ,然后将它们批量复制备份 到一个指定的目录中,并最终生成一份包含详细信息的 .csv 清单文件。

PowerShell 插件批量梳理与备份脚本

可以直接打开 PowerShell 终端,将以下代码复制并粘贴执行;或者将其保存为 .ps1 文件运行。

复制代码
# ==========================================
# 浏览器配置区
# ==========================================
# 目标浏览器: 选择 "Edge" 或 "Chrome"
$browser = "Edge" 

# 备份目标路径: 这里默认设置在 D 盘的临时下载目录,你可以按需修改
$backupDir = "D:\Download\Temp\BrowserExtensionsBackup" 

# ==========================================
# 脚本执行区
# ==========================================
# 1. 确定浏览器的本地扩展路径
$basePath = if ($browser -eq "Chrome") {
    "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Extensions"
} else {
    "$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\Extensions"
}

if (!(Test-Path $basePath)) {
    Write-Warning "未找到 $browser 的默认插件目录: $basePath"
    Write-Warning "如果你使用了多配置(Profile),请手动修改 `$basePath 路径。"
    return
}

# 2. 创建备份主目录
if (!(Test-Path $backupDir)) {
    New-Item -ItemType Directory -Force -Path $backupDir | Out-Null
}

$extensions = @()

Write-Host "开始扫描 $browser 插件目录..." -ForegroundColor Cyan

# 3. 遍历插件 ID 文件夹
Get-ChildItem -Path $basePath -Directory | ForEach-Object {
    $extId = $_.Name
    
    # 遍历具体的版本号文件夹
    Get-ChildItem -Path $_.FullName -Directory | ForEach-Object {
        $versionDir = $_.FullName
        $version = $_.Name
        $manifestPath = Join-Path -Path $versionDir -ChildPath "manifest.json"

        if (Test-Path $manifestPath) {
            try {
                # 读取 manifest.json,使用 UTF8 防止中文名称乱码
                $manifest = Get-Content -Path $manifestPath -Raw -Encoding UTF8 | ConvertFrom-Json
                $extName = $manifest.name

                # 处理多语言国际化名称 (以 __MSG_ 开头的变量)
                if ($extName -match "^__MSG_") {
                    $extName = "[需手动核对] 国际化名称插件 ($extId)"
                }

                # 将信息存入对象数组
                $extensions += [PSCustomObject]@{
                    Browser = $browser
                    Name    = $extName
                    Version = $version
                    ID      = $extId
                    Path    = $versionDir
                }

                # 4. 执行备份操作 (按 "插件名称_版本号" 的格式重命名备份文件夹,并过滤非法路径字符)
                $safeName = $extName -replace '[\\/:*?"<>|]', '_'
                $targetPath = Join-Path -Path $backupDir -ChildPath "${safeName}_${version}"
                
                if (!(Test-Path $targetPath)) {
                    Copy-Item -Path $versionDir -Destination $targetPath -Recurse -Force
                }
            } catch {
                Write-Warning "解析 JSON 失败: $manifestPath"
            }
        }
    }
}

# 5. 输出结果与导出清单
$extensions | Format-Table -Property Name, Version, ID -AutoSize

$csvPath = Join-Path -Path $backupDir -ChildPath "ExtensionsList.csv"
$extensions | Export-Csv -Path $csvPath -NoTypeInformation -Encoding UTF8

Write-Host "=====================================" -ForegroundColor Green
Write-Host "扫描与备份已完成!" -ForegroundColor Green
Write-Host "插件源码已备份至: $backupDir" 
Write-Host "详细清单已导出至: $csvPath"
Write-Host "=====================================" -ForegroundColor Green
相关推荐
张彦峰ZYF8 分钟前
浏览器调试接口的官方化:从 chrome-devtools-mcp 看 Agent 原生工具层的形成
人工智能·chrome·agent·mcp·apache-2.0许可·devtools-mcp·调试闭环
涛涛ing21 分钟前
2026年最值得关注的前端变化,藏在“默认值”里
前端
亿元程序员2 小时前
太牛了!这AI做出来的游戏,居然还能变现!
前端
hellice3 小时前
闪传 FlashDrop 实战:我用 300 行 Node 代码做了个「4 位取件码」临时文件中转站
前端·产品
用户0829773260053 小时前
RTX 5500 MIG 踩坑记录:切分之后模型跑不起来,排错整整一下午
前端
Lank_M3 小时前
AI 放大后的图更清楚,但它不能当原图入库
前端
Swot3 小时前
SvelteKit 数据流研究:`+page.js` 和 `+page.server.js` 到底谁在跑,数据又去了哪儿
前端·后端
用户4147679304153 小时前
Windows 触摸屏上 Swiper 轮播滑不动?可能是内部滚动容器抢走了你的手势
前端
张明君644513 小时前
从一个 Referer 引发的 403,到 SSR 服务失稳:Astro 流式渲染与缓存失效分析
前端
律宏阔3 小时前
微信小程序 + Taro + TDesign 去掉 [&&&],让普通 Tailwind 类接管局部样式
前端·微信小程序·taro