AlexDreamien/bulk-file-renamer

GitHub: AlexDreamien/bulk-file-renamer

一款基于 .NET 8 和 WPF 的 Windows 批量文件重命名桌面应用,通过可组合规则链、实时预览、冲突检测与撤销机制,帮助用户安全高效地完成大批量文件重命名。

Stars: 0 | Forks: 0

# bulk-file-renamer [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/AlexDreamien/bulk-file-renamer/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![.NET 8](https://img.shields.io/badge/.NET-8.0-512BD4.svg)](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, 云计算, 批量重命名, 规则引擎