# 批量文件重命名工具

一个基于 PySide6 开发的功能强大的批量文件重命名工具，支持多种重命名模式和高级功能。

![图标](images/index.png)

## 📋 目录

- [功能特性](#功能特性)
- [环境要求](#环境要求)
- [安装说明](#安装说明)
- [使用指南](#使用指南)
- [重命名模式详解](#重命名模式详解)
- [技术架构](#技术架构)
- [常见问题](#常见问题)
- [开发说明](#开发说明)
- [关于作者](#关于作者)

## ✨ 功能特性

### 🔄 多种重命名模式
- **序号重命名**：支持自定义格式、随机序号、自动补齐
- **字符替换**：普通替换 + 正则表达式高级替换
- **添加内容**：前缀、后缀、指定位置插入
- **删除操作**：文本删除、位置删除、范围删除
- **格式转换**：英文字母大小写转换、中文转拼音
- **扩展名处理**：大小写转换、扩展名替换

### 🎯 高级功能
- **实时预览**：执行前预览所有变更
- **批量选择**：全选、扩展名过滤
- **智能排序**：支持多列排序
- **撤销保护**：二次确认避免误操作
- **文件图标**：使用系统文件图标
- **状态反馈**：详细的操作结果和统计信息

### 🛠️ 技术特性
- **跨平台**：支持 Windows/Linux/Mac
- **高性能**：延迟加载优化，快速启动
- **完善日志**：支持文件日志和错误追踪
- **模块化设计**：清晰的代码结构

## 📋 环境要求

### 基础要求
- **Python**: 3.8+
- **操作系统**: Windows 10/11, Linux, macOS

### 依赖库
```bash
pip install PySide6
pip install pypinyin  # 中文转拼音功能
```

## 🚀 安装说明

### 方式一：下载可执行文件（推荐）
1. 从 Releases 页面下载最新版本的 `.exe` 文件
2. 直接运行，无需安装 Python 环境

### 方式二：从源码运行
```bash
# 克隆仓库
git clone https://github.com/your-repo/ToolVerse-Rename.git
cd ToolVerse-Rename/Rename

# 安装依赖
pip install -r requirements.txt

# 运行程序
python rename.py
```

### 方式三：打包成可执行文件
```bash
# 安装 PyInstaller
pip install pyinstaller

# 使用 spec 文件打包
pyinstaller 批量文件重命名.spec

# 或使用命令行打包
pyinstaller -F --name=批量文件重命名 -i images/index.png -w --add-data "images;images" rename.py
```

## 📖 使用指南

### 基本流程
1. **选择文件夹**：点击"选择文件夹"按钮选择要处理的文件夹
2. **选择文件**：勾选需要重命名的文件（支持全选和扩展名过滤）
3. **配置模式**：在对应的 Tab 页中配置重命名参数
4. **预览效果**：点击"预览效果"查看变更预览
5. **执行重命名**：确认无误后点击"开始修改"

### 界面布局
```
┌─────────────────────────────────────┐
│          文件夹选择区                │
├─────────────────────────────────────┤
│          Tab 重命名模式              │
│  ┌─────────┬─────────┬─────────┐    │
│  │ 序号模式 │ 替换模式 │ 添加模式 │    │
│  │ 删除模式 │ 转换模式 │ 扩展名   │    │
│  └─────────┴─────────┴─────────┘    │
├─────────────────────────────────────┤
│          控制按钮区                  │
│  [预览效果] [开始修改] [刷新] [清空]  │
├─────────────────────────────────────┤
│          文件列表表格                │
│  ☑│原文件名 │新文件名 │扩展名│状态  │
├─────────────────────────────────────┤
│          状态控制区                  │
│  ☑全选文件  ☑显示文件夹              │
└─────────────────────────────────────┘
```

## 🎯 重命名模式详解

### 1. 序号重命名

#### 功能说明
为文件添加序号，支持自定义格式和多种序号生成方式。

#### 配置选项
- **起始序号**：序号的开始数字
- **截止序号**：序号的最大值
- **增量**：每次递增的数值
- **位数**：序号的显示位数（自动补零）
- **格式模板**：支持变量替换
  - `{#}`：序号
  - `{self}`：原文件名
- **随机序号**：在指定范围内随机生成序号
- **自动补齐**：自动补齐指定位数

#### 预设格式
- `{#}_{self}` → `1_文件名.txt`
- `{#}.{self}` → `1.文件名.txt`
- `file_{#}_.{self}` → `file_1_.文件名.txt`
- `图片_{#}_.{self}` → `图片_1_.文件名.txt`
- `pic_{#}_.{self}` → `pic_1_.文件名.txt`

### 2. 字符替换

#### 功能说明
替换文件名中的指定字符，支持普通字符串和正则表达式。

#### 配置选项
- **查找内容**：要查找的字符串或正则表达式
- **替换为**：替换后的内容
- **使用正则表达式**：启用正则表达式模式

#### 正则表达式示例
```
# 将日期格式 20231210 → 2023-12-10
查找：(\d{4})(\d{2})(\d{2})
替换：$1-$2-$3

# 在文件名前添加前缀
查找：(.+)_(\d{4})
替换：NEW_$1_$2

# 将空格替换为下划线
查找：\s+
替换：_

# 删除中括号内容
查找：\[.*\]
替换：（空）

# 将所有数字替换为 NUM
查找：\d+
替换：NUM
```

### 3. 添加内容

#### 功能说明
在文件名的指定位置添加内容。

#### 添加方式
- **添加前缀**：在文件名开头添加内容
- **添加后缀**：在文件名末尾（扩展名前）添加内容
- **扩展添加**：在指定位置插入内容
  - 正数：从前往后数的位置
  - 负数：从后往前数的位置

#### 示例
```
原文件名：example.txt
添加前缀 "new_" → new_example.txt
添加后缀 "_old" → example_old.txt
在位置 3 插入 "test" → extestample.txt
```

### 4. 删除操作

#### 功能说明
删除文件名中的指定内容或位置的字符。

#### 删除方式
- **文本删除**：删除指定的文本内容
- **位置删除方法1**：从指定位置开始删除指定数量的字符
- **位置删除方法2**：删除指定范围内的字符（包含两个位置）

#### 位置说明
- 正数：从前往后数（1 表示第一个字符）
- 负数：从后往前数（-1 表示最后一个字符）

### 5. 格式转换

#### 英文字母转换
- **全部小写**：将所有字母转为小写
- **全部大写**：将所有字母转为大写
- **首字母大写**：将每个单词的首字母转为大写

#### 中文汉字转换
- **汉字转拼音（小写）**：`中文文档.txt` → `zhongwenwendang.txt`
- **汉字转拼音（首字母大写）**：`中文文档.txt` → `ZhongWenWenDang.txt`

> **注意**：中文转拼音功能需要安装 `pypinyin` 库

### 6. 扩展名处理

#### 功能说明
专门处理文件的扩展名，不影响文件名部分。

#### 处理方式
- **扩展名全部大写**：`.txt` → `.TXT`
- **扩展名全部小写**：`.JPG` → `.jpg`
- **扩展名替换**：将原扩展名替换为指定的新扩展名

## 🏗️ 技术架构

### 架构设计
```
┌─────────────────────────────────────┐
│              表示层 (UI)             │
│  ┌─────────────────────────────┐   │
│  │      TabWidget 界面         │   │
│  │  ┌─────────┬─────────────┐  │   │
│  │  │ 配置区  │   控制按钮  │  │   │
│  │  └─────────┴─────────────┘  │   │
│  │  ┌─────────────────────┐    │   │
│  │  │    文件列表表格     │    │   │
│  │  └─────────────────────┘    │   │
│  └─────────────────────────────┘   │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│             业务逻辑层                │
│  ┌─────────────────────────────┐   │
│  │   BatchRenameTool 核心类     │   │
│  │  ┌─────────┬─────────────┐  │   │
│  │  │文件管理 │ 重命名引擎  │  │   │
│  │  └─────────┴─────────────┘  │   │
│  │  ┌─────────┬─────────────┐  │   │
│  │  │验证模块 │ 日志系统    │  │   │
│  │  └─────────┴─────────────┘  │   │
│  └─────────────────────────────┘   │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│             工具支持层                │
│  ┌─────────┬─────────┬─────────┐   │
│  │拼音转换 │正则引擎 │文件操作  │   │
│  └─────────┴─────────┴─────────┘   │
└─────────────────────────────────────┘
```

### 核心类结构
- **BatchRenameTool**：主应用类，继承自 QMainWindow
- **AboutDialog**：关于对话框类
- **PinyinConverter**：拼音转换处理类

### 数据流处理
1. **用户输入** → Tab界面配置参数
2. **参数验证** → validate_params() 检查合法性
3. **预览生成** → generate_new_name() 创建新文件名
4. **用户确认** → 二次确认对话框
5. **执行重命名** → start_rename() 批量处理
6. **状态反馈** → 表格更新 + 日志记录

## ❓ 常见问题

### Q1: 程序无法启动？
**A**: 检查是否安装了所需依赖库：
```bash
pip install PySide6 pypinyin
```

### Q2: 中文转拼音功能不工作？
**A**: 需要单独安装 pypinyin 库：
```bash
pip install pypinyin
```

### Q3: 打包后的可执行文件找不到图片？
**A**: 确保 images 文件夹在可执行文件同一目录下，或者在打包时包含了图片资源。

### Q4: 如何撤销重命名操作？
**A**: 本工具目前不支持撤销功能，建议在重命名前备份重要文件，或者使用预览功能仔细检查变更。

### Q5: 正则表达式怎么使用？
**A**: 右键点击"使用正则表达式"复选框，选择"正则表达式帮助"查看详细说明。

### Q6: 可以处理文件夹吗？
**A**: 可以！勾选"显示文件夹"复选框即可对文件夹进行重命名操作。

### Q7: 支持哪些文件类型？
**A**: 支持所有文件类型的重命名，包括图片、文档、视频、音频等。

## 🛠️ 开发说明

### 项目结构
```
ToolVerse-Rename/
├── rename.py                 # 主程序文件
├── file_renamer.py          # UI 编译文件
├── file_renamer.ui          # UI 设计文件
├── chinese_to_pinyin.py     # 中文转拼音模块
├── U_about_page.py          # 关于页面
├── U_about_page.ui          # 关于页面UI
├── images/                  # 图片资源
│   ├── index.png            # 主图标
│   ├── qq.png               # QQ 联系方式
│   └── wx.png               # 微信联系方式
├── 批量文件重命名.spec       # PyInstaller 打包配置
└── README.md               # 说明文档
```

### 开发环境搭建
1. 克隆项目
2. 安装依赖：`pip install -r requirements.txt`
3. 运行程序：`python rename.py`

### 修改 UI 界面
1. 使用 Qt Designer 打开 `.ui` 文件
2. 修改界面布局
3. 重新编译 UI 文件：
```bash
pyside6-uic file_renamer.ui -o file_renamer.py
```

### 打包发布
```bash
# 使用 spec 文件打包
pyinstaller 批量文件重命名.spec

# 或直接命令行打包
pyinstaller -F -w -i images/index.png --add-data "images;images" rename.py
```

## 📄 许可证

本项目采用 MIT 许可证，详见 [LICENSE](LICENSE) 文件。

## 🤝 贡献指南

欢迎提交 Issue 和 Pull Request！

1. Fork 本项目
2. 创建特性分支：`git checkout -b feature/新功能`
3. 提交更改：`git commit -m '添加新功能'`
4. 推送到分支：`git push origin feature/新功能`
5. 提交 Pull Request

## 👨‍💻 关于作者

### 联系方式
- **QQ**: 372121851
- **微信**: yoligg

### 致谢

感谢所有为本项目提供反馈和建议的用户！您的支持是我们持续改进的动力。

---

> 如果这个工具对您有帮助，请给个 ⭐ Star 支持一下！