# 复制工具 **Repository Path**: myboyhtt/copy-tool ## Basic Information - **Project Name**: 复制工具 - **Description**: 相机导出照片的复制工具 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-17 - **Last Updated**: 2026-09-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 文件复制工具 按文件名关键字批量筛选并复制文件的桌面工具,适用于相机导出照片选择完成后批量复制的场景。 ## 功能说明 - 选择**源文件夹**,在根目录中扫描文件(不进入子文件夹) - 输入**匹配关键字**,多个关键字用英文分号 `;` 分隔 - 选择**目标文件夹**,点击复制 - 文件名**包含任一关键字**(子串匹配)的文件将被复制到目标目录 - 目标目录已有同名文件时,自动重命名为 `文件名_1.扩展名`、`文件名_2.扩展名` 等 ## 技术栈 - Python 3.10+ - PySide6(界面) - pathlib / shutil(文件操作) - PyInstaller(打包) ## 项目结构 ``` copy-tool/ ├── main.py # 程序入口 ├── requirements.txt # 依赖 ├── copy_tool.spec # PyInstaller 配置 ├── images/ │ └── icon.png # 应用图标(打包为 CopyTool.exe 图标) ├── core/ │ ├── matcher.py # 关键字解析与匹配 │ └── copier.py # 复制与重命名 └── ui/ └── main_window.py # 主界面 ``` ## 安装与运行 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 启动程序 ```bash python main.py ``` ## 使用说明 1. 点击「浏览...」选择**源文件夹** 2. 在「匹配关键字」输入框中填写关键字,例如:`IMG;2024;DSC` 3. 选择**目标文件夹** 4. 点击「开始复制」 5. 在「执行日志」区域查看匹配与复制详情 ## 打包为可执行文件 ```bash pyinstaller copy_tool.spec ``` 或双击项目根目录的 `build.cmd` 一键打包。 打包完成后,可执行程序位于: ``` dist/CopyTool/CopyTool.exe ``` `CopyTool.exe` 与运行时窗口图标均来自 `images/icon.png`(打包时自动转为 `.ico`)。 将整个 `dist/CopyTool` 文件夹分发给用户即可运行,无需安装 Python。 ### 体积说明 精简版打包体积约 **120MB**(原先全量收集 PySide6 模块时可达 **600MB+**)。 优化要点(已写入 `copy_tool.spec`): - 不再使用 `collect_submodules("PySide6")` 全量打入 QML、3D、WebEngine 等模块 - 仅依赖 PyInstaller 自动分析,打包本工具实际用到的 `QtWidgets / QtGui / QtCore` - 显式排除 Charts、Quick、WebEngine 等不需要的 Qt 模块 若打包时报「拒绝访问」,请先关闭 `dist/CopyTool` 下在 IDE 中打开的文件,并退出正在运行的程序后再重试。 ## 示例 | 源文件夹文件 | 关键字 | 是否匹配 | |-------------|--------|---------| | DSC_IMG_001.jpg | IMG | 是 | | 2024-08-17.CR2 | 2024 | 是 | | video.mp4 | IMG | 否 |