🌐 中文 | English
一键解压从网盘下载的"伪装"压缩包 —— 专为百度网盘等网盘场景打造。
网盘(尤其是百度网盘)上分享的压缩包常被伪装:文件名被故意加入乱码以规避内容审查 —— 例如 movie.7z.001 变成 movie.7z.00删1,或把 .rar 改名成一串随机字符。下载后这些文件无法直接解压,分卷也被打散。
本工具会自动还原真实文件名(解伪装)、重新分组分卷、逐一尝试密码,并递归解压所有内容(含嵌套压缩包),一次搞定。
- 下载:从 Releases 页面选择对应系统和架构的发布包。Windows 解开
.zip后得到complex-unzip-tool-v2.exe。 - 拖拽:在 Windows 上,将压缩包文件或文件夹拖拽到
.exe上。 - 完成:工具会自动解伪装、分组并解压所有内容。
macOS / Linux 下载对应的 .tar.gz,解开后在终端运行。以下以 Apple Silicon Mac 为例,其他平台请替换包名:
tar -xzf complex-unzip-tool-v2-v1.3.1-macos-arm64.tar.gz
./complex-unzip-tool-v2 "$HOME/Downloads/Archives"| 平台 | v1.3.1 发布包 | 内置 7-Zip 26.03 |
|---|---|---|
| Windows x64 | complex-unzip-tool-v2-v1.3.1-windows-x64.zip |
7z.exe + 7z.dll |
| macOS Intel | complex-unzip-tool-v2-v1.3.1-macos-x64.tar.gz |
通用二进制 7zz |
| macOS Apple Silicon | complex-unzip-tool-v2-v1.3.1-macos-arm64.tar.gz |
通用二进制 7zz |
| Linux x64 | complex-unzip-tool-v2-v1.3.1-linux-x64.tar.gz |
静态二进制 7zzs |
| Linux ARM64 | complex-unzip-tool-v2-v1.3.1-linux-arm64.tar.gz |
静态二进制 7zzs |
发布包已包含 Python 和 7-Zip,无需另行安装,运行时不联网下载引擎。每个包附带说明和许可证,Release 另附 SHA256SUMS。二进制来源、校验值和许可证见 7z/README.md。
macOS 的应用分别按 Intel 和 Apple Silicon 架构构建。Linux 独立包在 Ubuntu 24.04 上构建,需要兼容的系统库;macOS 签名及公证、Windows 发行者签名尚未配置。也可按下方「开发」步骤从源码运行或自行构建。
# 解压文件夹内的所有压缩包
complex-unzip-tool-v2.exe "D:\Downloads\Archives"
# 解压指定文件(只传主卷即可自动收集同目录的同组分卷)
complex-unzip-tool-v2.exe "D:\file.zip" "D:\movie.7z.001"解压结果输出到 unzipped/ 文件夹。成功后原始压缩包会被移到系统的回收站 / 废纸篓(可恢复)。Linux 需要可用的桌面废纸篓目录;回收失败时保留原文件。
只传入一个分卷文件时,会按还原后的文件名收集同目录、同一命名格式的同组分卷,包括带伪装字符的续卷;成功后统一清理,解压或密码失败时全部保留。Windows 下重定向到文件或管道的输出使用 UTF-8,完成后无需按回车退出。
很多网盘压缩包带密码。把密码写进 passwords.txt,工具会自动逐一尝试(空密码会最先尝试)。
支持两个位置,二者会自动合并:
- 目标目录(待解压文件夹) —— 把
passwords.txt放在你传给工具的文件夹里,或与待解压文件同级目录。适合「这批文件专用」的密码。 - 工具目录 —— 把
passwords.txt放在可执行文件旁(Windows 为.exe;macOS / Linux 为complex-unzip-tool-v2)。源码运行时使用项目根目录。该位置不受当前工作目录或拖放启动方式影响。
文件格式(每行一个密码,空行忽略,以 # 开头的行为注释,以 # 开头的密码写成 \#,自动去重):
# 常用弱口令
123456
www.example.com
mypassword
\#以井号开头的密码
密码本身以 # 开头时,请在前面加反斜杠写成 \#(如 \#abc 表示密码 #abc);自动保存的密码会自动转义。从旧版本升级时,请检查密码本中是否有以 # 开头的密码,并按此方式修改。
- 📝 自动记忆:运行中新破解出的密码会自动追加到工具目录的
passwords.txt,下次直接复用;已有的注释和顺序保持不变,以#开头的密码会自动保存为\#。 - 目标目录的密码本仅作为读取来源(与工具目录相同时除外)。工具目录不可写时会提示保存失败,仍会完成解压收尾;请将程序放到可写目录以保存新密码。构建不会将个人密码本内嵌到程序中。
- 🈶 编码自适应:自动识别 UTF-8 / GBK / GB2312 / Big5 / UTF-16(含 BOM),中文密码无需担心乱码。
从旧版本升级时,如果密码本曾被写到桌面、下载目录等启动目录,请将需要长期使用的条目合并到新程序旁的 passwords.txt。
| 选项 | 说明 |
|---|---|
--version, -v |
显示版本 |
--permanent-delete |
永久删除原文件而非移入回收站 |
--help |
显示帮助 |
🛡️ 默认安全:当密码错误或分卷缺失时,原文件绝不会被删除。
- 🎭 文件名解伪装 —— 通过可配置规则(
config/cloaked_file_rules.json)还原乱码文件名;解压失败时自动撤销重命名。 - 📦 多分卷支持 —— 支持
.001/.002、.part1/.part2、.rar/.r00、.zip/.z01等格式,自动查找并重组散落的分卷。 - 🔐 智能密码 —— 自动尝试密码本并缓存成功密码。
- 🏗️ 嵌套解压 —— 递归解压压缩包中的压缩包。
- 🖱️ 独立运行 —— 各平台可构建内置 Python 与 7-Zip 的单文件程序;Windows 还支持拖拽到
.exe。 - 🌐 中英双语界面 —— 清晰的中英文进度输出。
需要 Python 3.11+ 与 Poetry。支持上表所列平台及架构。
git clone https://github.com/rozx/Complex-unzip-tool-v2.git
cd Complex-unzip-tool-v2
poetry install
poetry run main "D:\path\to\archives" # 运行(别名 cuz)
poetry run pytest -q # 运行测试
poetry run build # 构建当前平台的独立程序 -> dist/macOS / Linux 运行示例:
poetry run main "$HOME/Downloads/Archives"
poetry run pytest -q
poetry run build
./dist/complex-unzip-tool-v2 --help构建需在目标操作系统和架构上进行。Windows 输出 .exe,macOS / Linux 输出无扩展名的可执行文件;构建只包含当前平台的引擎。macOS 的应用本身按当前 Python 架构构建,内置 7-Zip 为通用二进制。当前构建不配置发行者签名或公证。
从源码运行时,若 Unix 引擎的执行权限在复制过程中丢失,可对相应文件执行 chmod +x 7z/macos/7zz、chmod +x 7z/linux-x64/7zzs 或 chmod +x 7z/linux-arm64/7zzs。引擎缺失或不可执行时,工具会在修改输入文件前报错。
架构、约定与解压流程详见 AGENTS.md 与 CLAUDE.md。
CI 在推送或提交 PR 到 main、release/** 时运行。五个平台分别执行完整测试、原生引擎校验、真实压缩包冒烟测试、独立程序构建及构建产物冒烟测试。每个平台的发布包在 Actions artifacts 中保留 14 天。
同一分支或 PR 的新提交会取消对应事件的旧 CI。发布构建使用独立并发组,不会被普通 CI 取消。发布合并仍分别执行 main 推送检查和发布构建,以确保发布仅使用本次发布工作流生成的产物。
Release 仅在以下条件同时满足时自动发布:
- PR 的来源分支为
release/*,例如release/v1.3。 - PR 在合并时带有
release标签。 - PR 被合并到
main。
合并前,确认 pyproject.toml、包内 __version__ 和 .bumpversion.cfg 使用一致且尚未发布的 X.Y.Z。准备后续版本时,可通过 poetry run bump-minor、poetry run bump-patch 等命令升版。分支名只控制触发,发布标签取自项目版本,例如 v1.3.1。同一 PR 必须包含对应的发布说明;1.3.1 的说明位于 ReleaseNotes/RELEASE_NOTES_v1.3.1.md。文件缺失或为空时,会在平台构建前报错。
提交前可本地检查版本和发布说明:
poetry run python -m scripts.release version
poetry run python -m scripts.release verify-notes发布流程会从该 PR 的确切合并提交重新构建全部平台;全部成功后创建 GitHub Release,以 ReleaseNotes/RELEASE_NOTES_vX.Y.Z.md 的原文作为正文,并上传上方列出的五个平台发布包和 SHA256SUMS。
工作流需先存在于 main,之后符合条件的合并才会触发自动发布。标签应在合并前添加;仅关闭 PR、合并后补标签或直接推送 tag 都不会发布。使用内置 GITHUB_TOKEN,仅最终发布任务拥有 contents: write。
失败时可在 Actions 中重新运行失败任务。上传中断会保留草稿;同版本、同合并提交的草稿可以继续上传,并以该提交中对应版本的说明文件更新正文。校验全部远端文件后才公开发布;已公开的 Release 不会覆盖,指向其他提交的已有 tag 或草稿会报错。
欢迎提交 Issue 与 PR。请保持改动小而有测试,并遵循 CLAUDE.md 中的 TDD 流程。
MIT 许可证 —— 详见 LICENSE。
Rozx —— GitHub