AlexDreamien/bulk-file-renamer
GitHub: AlexDreamien/bulk-file-renamer
一款基于 .NET 8 和 WPF 的 Windows 批量文件重命名桌面应用,通过可组合规则链、实时预览、冲突检测与撤销机制,帮助用户安全高效地完成大批量文件重命名。
Stars: 0 | Forks: 0
# bulk-file-renamer
[](https://github.com/AlexDreamien/bulk-file-renamer/actions/workflows/ci.yml)
[](LICENSE)
[](https://dotnet.microsoft.com/)
用于批量重命名文件的 Windows 桌面应用程序。由可组合规则构成的 pipeline,
具备实时预览、冲突检测和撤销功能。前端采用 WPF + MVVM 架构,构建于
由 xUnit 提供测试覆盖的纯规则引擎库之上。
## 功能
- **添加文件**:可通过对话框(`Add files...`)、添加整个文件夹
(`Add folder...`),或者直接拖放到预览网格中。
- **六种可组合规则**,按固定且易于理解的顺序执行:
1. 查找并替换(默认区分大小写)
2. 移除黑名单中的字符
3. 更改大小写(全小写 / 全大写 / 首字母大写)
4. 前缀
5. 后缀
6. 顺序编号(可配置起始值 / 步长 / 填充 / 位置 / 分隔符)
- **实时预览** —— 每次编辑都会通过 `CommunityToolkit.Mvvm` 生成的
`OnXxxChanged` 钩子立即重新计算新名称。
- **冲突检测** —— 目标路径冲突的行会以红色高亮显示;
在解决冲突之前,“应用”按钮将保持禁用状态。
- **撤销**最后一批次的重命名。重命名操作会按相反顺序回放,
从而干净利落地还原链式移动。
## 架构
同一个解决方案下包含三个项目,均目标为 `net8.0`:
```
src/BulkFileRenamer.Core Pure logic — rules, pipeline, planner,
ConflictDetector, RenameExecutor.
No WPF, no Windows-specific types.
src/BulkFileRenamer.App WPF UI. Single MainWindow + MainViewModel,
uses CommunityToolkit.Mvvm.
tests/BulkFileRenamer.Tests xUnit suite over Core (28 tests).
```
将 Core 拆分出来是核心的设计选择:规则和
规划器(planner)无需启动窗口即可进行独立测试,并且
ViewModel 将它们组合为一组 `IRenameRule` 实例堆栈。UI 只是
薄薄的一层胶水代码。
## 构建
要求安装 .NET 8 SDK 和 Windows(WPF 目标框架为 `net8.0-windows`)。
```
dotnet restore
dotnet build --configuration Release
dotnet test --configuration Release --no-build
```
运行应用程序:
```
dotnet run --project src/BulkFileRenamer.App
```
## 测试
`dotnet test` 会运行 28 个 xUnit 测试用例,涵盖:
- **每种规则** —— 空输入空操作(noop)、大小写敏感性、填充 / 步长 /
位置变体、大小写转换的模式表、字符集语义
- **Pipeline** —— 执行顺序、同一性、全路径组合
- **规划器(Planner)** —— 顺序、空操作(noop)检测
- **冲突检测器** —— 唯一目标路径、两两 / 三方冲突、
不区分大小写的路径比较
- **执行器(Executor)** —— 移动器调用、跳过空操作(noop)、撤销顺序
- **集成测试** —— 在临时目录中进行真实的文件系统往返测试
CI 会在每次提交和 pull request 时在 `windows-latest` 上运行相同的测试 —— 详情请参见
[`.github/workflows/ci.yml`](.github/workflows/ci.yml)。
## 不在范围内
设计考量:不支持正则表达式规则(仅限文本查找/替换),没有云端功能,
除了上一次操作外不支持撤销历史记录,不支持其他操作系统
(WPF 仅限 Windows)。不过,Core 库本身是与操作系统无关的,
可以单独为控制台或跨平台 UI 提供支持。
## 许可证
[MIT](LICENSE)。
标签:MVVM, Windows桌面应用, WPF, 云计算, 批量重命名, 规则引擎