7-zip解压多层嵌套文件提取

7zip 7zip 13

使用7-Zip解压多层嵌套文件(例如压缩包内还有压缩包),可以通过 批处理脚本7-Zip命令行工具 实现自动递归解压,以下是几种高效方法:

7-zip解压多层嵌套文件提取-第1张图片-7-Zip 中文版 - 电脑压缩解压神器 - 最新版


使用批处理脚本(Windows CMD)

@echo off
setlocal enabledelayedexpansion
:loop
dir /s /b *.7z *.zip *.rar *.tar.gz > temp.txt 2>nul
if not exist temp.txt goto end
for /f "usebackq delims=" %%a in (temp.txt) do (
    echo 正在解压: %%a
    "C:\Program Files\7-Zip\7z.exe" x "%%a" -o"%%~dpa" -y -aoa >nul
    if exist "%%a" del /f /q "%%a"
)
del /q temp.txt >nul 2>nul
goto loop
:end
echo 所有嵌套压缩包已解压完成!
pause

使用方法:

  1. 将脚本保存为 unpackall.bat
  2. 放在包含多层压缩包的根目录
  3. 双击运行(需已安装7-Zip在默认路径)

使用PowerShell脚本(更灵活)

$7zPath = "C:\Program Files\7-Zip\7z.exe"
$rootFolder = Get-Location
do {
    $archives = Get-ChildItem -Path $rootFolder -Recurse -Include @('*.7z','*.zip','*.rar','*.tar.gz','*.gz') -ErrorAction SilentlyContinue
    $anyFound = $false
    foreach ($archive in $archives) {
        $outputDir = $archive.DirectoryName
        Write-Host "解压: $($archive.FullName)" -ForegroundColor Cyan
        & $7zPath x $archive.FullName -o"$outputDir" -y -aoa | Out-Null
        Remove-Item $archive.FullName -Force -ErrorAction SilentlyContinue
        $anyFound = $true
    }
} while ($anyFound)
Write-Host "所有嵌套压缩包已处理完成!" -ForegroundColor Green

使用方法:

  1. 以管理员身份打开PowerShell
  2. 导航到包含压缩包的文件夹
  3. 粘贴并运行脚本

极简一次性命令(单层嵌套适用)

for /r %i in (*.7z *.zip *.rar) do "C:\Program Files\7-Zip\7z.exe" x "%i" -o"%~dpi" -y -aoa

说明:

  • 直接在解压文件夹路径的CMD中运行
  • 会解压所有压缩包,包括子文件夹中的
  • 不会删除原压缩包

高级用法:保留目录结构(仅解压最后一层)

若只想解压最深层的压缩包(保留中间层压缩包作为目录结构),可修改脚本中的 -o 参数:

7z x archive.7z -o"output_folder" -y -aoa

注意事项

  1. 循环风险:脚本会持续检测新生成的压缩包,确保没有死循环(建议设置最大递归层数)
  2. 文件名冲突:使用 -aoa 参数自动覆盖,若需保留所有文件请改用 -aos
  3. 加密压缩包:需要预置密码(在脚本中添加 -pPASSWORD
  4. 7-Zip路径:若安装在其他位置,请修改 "C:\Program Files\7-Zip\7z.exe" 为实际路径

推荐场景

  • 批量处理多级加密压缩包:结合密码预置实现全自动解压
  • 服务器自动化:通过计划任务定期清理嵌套压缩包
  • 快速解压网盘下载的嵌套文件:节省手动操作时间

方法均可应对深层嵌套(如10层以上)的压缩包,建议先在小范围测试再投入大量文件操作。

标签: 深度提取

抱歉,评论功能暂时关闭!