文件分类 → 可选命名规则 → 分组加密压缩,一站式批处理工具。
基于 Bandizip 命令行实现自动分卷、密码保护和二次打包归档。支持任务中断后从断点文件继续压缩。
环境要求: Windows + Bandizip(加入 PATH)
直接运行 dist/SortZip.exe 即可启动图形界面。
- 分类 — 按扩展名将输入文件归类至输出文件夹的子目录(支持自定义分类名);开启「保持原文件夹层级」时保留子目录结构
- 命名规则(可选)— 每个文件夹可独立配置模板(
{n}、{ext}、{folder}、{original}),支持预设快速填充;层级模式下子文件夹自动继承父级规则 - 对照表(可选)— 勾选后在各文件夹生成
List.txt,记录序号、原文件名、新文件名(及压缩包名),\t分隔可直接导入 Excel - 分组压缩(可选)— 每 N 个文件一组,Bandizip 带密码压缩,自动或手动分卷;可仅执行一次压缩(无
-First后缀)或两次压缩(先分卷后归档) - 二次压缩(可选)— 分卷文件再次打包为单文件归档(默认后缀
.zipp,可自定义)
执行前自动校验:
- 输出文件夹冲突检测
- 输入文件类型匹配检测
- 命名模板冲突检测
- 重复文件名检测(开启递归时自动扫描,提示启用层级模式)
- 文件包含情况提示(展示未勾选扩展名的文件列表)
压缩过程中自动生成断点文件(.sortzip_resume.json,位于输出文件夹根目录)。任务中断后可从中断处恢复:
- 开始页点击「恢复任务(导入断点)」选择或直接拖入断点文件
- 确认恢复摘要(输出文件夹/待处理组数/分卷/后缀等)并重新输入密码
- 已完成的组跳过,一次压缩完成的组仅补二次打包,未开始的组完整重压
- 导入时自动校验待压缩分组的源文件:若发现文件缺失或被修改(大小与断点记录不一致)会弹出警告,可取消恢复或继续(继续则跳过存在问题、保留未压缩的分组)
| 取消方式 | 行为 | 源文件 |
|---|---|---|
| 安全取消 | 当前压缩组完成即自动停止,生成断点文件 | 完整保留 |
| 强制取消 | 立即终止当前压缩进程 | 完整保留,可从断点恢复 |
左侧导航栏切换,共 6 个页面:
| 页面 | 功能 |
|---|---|
| 文件 | 文件选择(输入/输出文件夹、包含子文件夹)、密码设置(压缩密码/确认密码/记住密码)、分卷设置(每包文件数/分卷大小/启用分卷) |
| 映射 | 扩展名→文件夹名映射,分组勾选(视频/音乐/图片/文档/程序/字体/压缩包),支持拖拽排序;「映射全部」一键扫描输入文件夹并启用全部文件类型的映射,「删除全部」一键清空所有映射 |
| 命名 | 排序设置(7 种排序预设,重复选择也触发刷新)、保持原文件夹层级、每个映射文件夹独立命名规则(支持预设模板)、命名规则表支持拖拽排序、压缩后重命名(一次/二次压缩后独立后缀替换,一次压缩后仅限未启用分卷) |
| 预览 | 标签页切换文件夹,显示所有文件重命名前后对比,支持拖拽手动排序(排序结果影响实际执行顺序) |
| 开始 | 压缩设置(一次压缩、二次压缩、压缩格式、压缩后校验完整性)、其他选项(保留原始文件、输出目录 List.txt、自动关闭 Bandizip)、进度条、执行/取消、实时日志、统计报告 |
| 设置 | 深色模式、执行前确认参数(含文件包含情况提示)、使用手册、版本信息、还原默认设置、自动更新检查 |
E:\输出文件夹\
├── 图片\
│ ├── 照片_1.jpg # 按命名规则重命名
│ ├── 照片_2.jpg
│ ├── List.txt # 命名对照表(可选)
│ ├── 1-4.zip # 第一次压缩分卷
│ └── 5-8.zipp # 二次压缩归档
├── 文档\
│ ├── 1.txt
│ ├── List.txt
│ └── 1-2.zipp
└── 视频\
└── ...
E:\输出文件夹\
├── 图片\
│ ├── 暑假\
│ │ ├── 1.jpg
│ │ ├── List.txt
│ │ └── 1.zip
│ └── 寒假\
│ ├── 1.jpg
│ ├── 2.jpg
│ ├── List.txt
│ └── 1-2.zip
└── 文档\
└── ...
SortZip/
├── sortzip_core/ # 核心包
│ ├── __init__.py # 版本号
│ ├── app.py # PySide6 GUI 主窗口
│ ├── engine.py # 引擎(分类/重命名/压缩)
│ ├── widgets.py # UI 组件(DropLineEdit、弹窗、Worker 线程)
│ ├── constants.py # 扩展名预设、暗色主题、命名模板预设
│ └── manual_content.py # 使用手册 HTML 文本
├── main.py # 入口 → sortzip_core.app.main()
├── SortZip.py # 旧版兼容入口 → sortzip_core.engine.cli()
├── dist/
│ └── SortZip.exe # 打包好的可执行文件
├── icon.ico # EXE 文件图标
├── README.md
└── CHANGELOG.md
- 仅支持 Bandizip,必须安装并加入 PATH
- 密码非空时 ≥ 8 位
- 命名规则默认禁用,需手动启用
- 模板留空 = 不重命名,保留原始文件名
- 压缩包名始终为组序号格式(
1-4、5-8),不受文件命名规则影响 - 排序方式位于「命名」页面顶部,可选 7 种排序预设;文件名排序使用自然序(
1,2,…,10,11而非1,10,11,2,…) - 开启「保持原文件夹层级」时,子文件夹继承父级命名规则,每个子文件夹独立重命名和压缩
- 取消勾选「启用分卷」可强制单文件输出,不进行分卷
- 勾选「输出目录」后各文件夹生成
List.txt,\t分隔,可直接拖入 Excel;未启用压缩时自动省略「所属压缩包名」列 - 勾选「保留原始文件」时输入文件仅复制,压缩后副本自动清理
- 取消勾选「一次压缩」可跳过所有压缩步骤,仅执行分类与重命名
- 设置页「执行前确认参数」默认启用,每次执行前弹窗展示关键参数及文件包含情况;取消勾选后直接执行
- 扩展名映射表和命名规则表均支持拖拽整行调整顺序
- 「映射全部」扫描输入文件夹全部文件类型并启用映射,预设外的扩展名会弹窗提示输入文件夹名并创建新映射;「删除全部」一键清空所有映射
- 效果预览表支持拖拽手动排序,切换排序预设时自动清空手动顺序
- 「压缩后校验完整性」默认关闭,开启后压缩完逐一测试压缩包
- 压缩后重命名分「一次压缩后」「二次压缩后」两行,各自独立启用后缀替换;一次压缩后的后缀替换仅在取消勾选「启用分卷」时可用(避免破坏分卷文件的
.z01/.z02扩展名) - 选择压缩格式时,一次/二次压缩后的默认后缀会同步更新为该格式对应的后缀
- 启动时自动检查 GitHub 最新 Release,发现新版本可选下载
- 窗口尺寸和位置自动保存恢复
- 设置页「还原默认设置」可一键清除所有配置
- 首次使用建议先小范围测试
MIT