# 7z **Repository Path**: web/7z ## Basic Information - **Project Name**: 7z - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-19 - **Last Updated**: 2026-08-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 7z 文件夹批量打包工具 一个基于 Python + tkinter 开发的轻量级图形界面批量打包工具,调用 7-Zip 对指定目录下的子文件夹进行逐个压缩打包。 ![软件界面截图](app.png) ## 功能特性 - **批量压缩**:自动扫描源目录下的所有子文件夹,逐个打包为 ZIP 文件 - **资源占用极低**:GUI 基于 tkinter,空闲内存约 30-50MB,压缩任务由 7z.exe 独立完成 - **单文件部署**:打包为单个 exe,无需安装 Python 环境,双击即可运行 - **灵活过滤**:支持文件/文件夹名过滤,兼容通配符 `*` `?` - **配置持久化**:所有设置自动保存,下次启动自动恢复 - **实时进度**:进度条 + 百分比 + 详细日志,压缩过程一目了然 - **可选压缩结构**:支持选择压缩包内是否包含外层文件夹 ## 环境要求 - **操作系统**:Windows 7 / 10 / 11(32位或64位) - **7-Zip**:需已安装 [7-Zip](https://www.7-zip.org/),默认路径为 `C:\Program Files\7-Zip\7z.exe` ## 快速开始 ### 方式一:直接运行 exe(推荐) 1. 双击 `7z打包工具.exe` 启动程序 2. 首次使用需配置 7z.exe 路径(默认已填入常见路径) 3. 选择源目录(包含待压缩子文件夹的父级目录) 4. 点击 **开始压缩** 即可 ### 方式二:从源码运行 ```bash # 安装依赖(仅需 tkinter,Python 内置无需额外安装) python 7z打包工具.py ``` ### 方式三:自行打包 ```bash # 安装 pyinstaller pip install pyinstaller # 打包为单文件 exe(无控制台窗口) pyinstaller -F -w -n "7z打包工具" 7z打包工具.py # 打包产物在 dist/ 目录下 ``` ## 界面说明 ``` ┌─────────────────────────────────────────────────────┐ │ 7z.exe 路径 [________________________] [浏览...] │ ├─────────────────────────────────────────────────────┤ │ 源目录 [________________________] [浏览...] │ ├─────────────────────────────────────────────────────┤ │ 过滤规则(每行一个) │ │ ┌─────────────────────────────────┐ │ │ │ *.tmp │ [清空] │ │ │ *.log │ [添加常见] │ │ │ Thumbs.db │ │ │ └─────────────────────────────────┘ │ ├─────────────────────────────────────────────────────┤ │ ☑ 压缩包内包含外层文件夹 │ ├─────────────────────────────────────────────────────┤ │ 进度 [████████████░░░░░░░] 65% │ ├─────────────────────────────────────────────────────┤ │ 日志 │ │ ┌─────────────────────────────────┐ │ │ │ [1/5] 压缩:文件夹A │ │ │ │ ✅ 成功 -> 文件夹A.zip │ │ │ │ ... │ │ │ └─────────────────────────────────┘ │ ├─────────────────────────────────────────────────────┤ │ [开始压缩] [保存配置] [打开文件夹] [清空日志] │ └─────────────────────────────────────────────────────┘ ``` ## 设置项说明 ### 1. 7z.exe 路径 7-Zip 主程序路径。默认值:`C:\Program Files\7-Zip\7z.exe` - 点击 **浏览...** 可手动选择 - 如果安装在非默认位置(如便携版),请手动指定 ### 2. 源目录 包含待压缩子文件夹的**父级目录**。 ``` 示例目录结构: D:\待压缩\ ├── 项目A\ ← 这些子文件夹 ├── 项目B\ ← 将被分别打包 └── 项目C\ 选择 "D:\待压缩" 作为源目录即可 ``` ### 3. 过滤规则 支持多行配置,每行一个规则,支持以下通配符: | 通配符 | 含义 | 示例 | |--------|------|------| | `*` | 匹配任意字符序列 | `*.tmp` 匹配所有 .tmp 文件 | | `?` | 匹配单个字符 | `log?` 匹配 log1、log2 等 | **过滤对象**:同时作用于文件名和文件夹名,匹配的项目将被排除(不进入压缩包)。 **常用过滤规则示例**: ``` *.git *.svn *.tmp *.log Thumbs.db .DS_Store desktop.ini $RECYCLE.BIN System Volume Information ``` 点击 **添加常见** 可一键填入以上常用规则。 ### 4. 压缩包内包含外层文件夹 - **勾选**(默认):ZIP 内保留原文件夹结构 ``` 项目A.zip └── 项目A/ ├── 文件1.txt └── 文件2.txt ``` - **取消勾选**:仅压缩文件夹内的内容 ``` 项目A.zip ├── 文件1.txt └── 文件2.txt ``` ## 配置文件 配置会自动保存为 `7z打包配置.json`,与 exe 位于同一目录下: ```json { "sevenz": "C:\\Program Files\\7-Zip\\7z.exe", "source": "D:\\待压缩", "include_parent": true, "filters": [ "*.tmp", "*.log", "Thumbs.db" ] } ``` 下次启动时自动加载,无需重复配置。 ## 输出结果 压缩完成后,每个子文件夹对应生成一个同名 ZIP 文件: ``` 源目录/ ├── 项目A/ ├── 项目A.zip ← 生成的压缩包 ├── 项目B/ └── 项目B.zip ← 生成的压缩包 ``` ## 常见问题 ### Q: 提示 "找不到 7z.exe"? A: 请确认 7-Zip 已正确安装,并在设置中指定正确的 7z.exe 路径。 ### Q: 压缩速度慢? A: 压缩速度取决于 CPU 性能、磁盘读写速度和文件数量/大小。工具本身不占用压缩计算,全部由 7-Zip 完成。 ### Q: 支持哪些压缩格式? A: 目前默认使用 ZIP 格式(兼容性最好)。如需其他格式,可修改源码中的 `-tzip` 参数为 `-t7z`、`-ttar` 等。 ### Q: 过滤规则的匹配范围? A: 过滤规则作用于 7z 命令的 `-xr!` 参数,会排除文件名和文件夹名匹配规则的项目。注意:7z 的通配符语法与标准略有不同,`*` 匹配不含路径的任意字符。 ## 技术栈 - **Python 3.12** — 主程序语言 - **tkinter** — GUI 框架(Python 内置) - **7-Zip CLI** — 压缩引擎 - **PyInstaller** — 打包工具 ## 更新日志 ### v1.0.0 - 初始版本发布 - 支持批量 ZIP 压缩 - 支持文件/文件夹过滤 - 支持配置持久化 - 支持进度显示和日志输出 --- ## License MIT License