使用 Boost Regex 和 Boost 文件系统进行文件重命名
使用 Boost Regex 和 Boost 文件系统进行文件重命名
引言
作为一名专业的程序员,你经常需要重命名大量的文件。虽然理论上 `cmd` 中的 `move` 命令可以做到同样的事情,但它往往会变得一团糟。
因此,我使用 Boost 库的正则表达式和文件系统编写了一个简单的工具,它会扫描用户提供的目录,并使用 `regex_replace` 重命名文件。请注意,正则表达式语法功能强大且复杂,因此我添加了首先测试提供的格式字符串的可能性。
简单用法
有关 `boost::regex_replace` 的完整概述,请参阅 https://boost.ac.cn/。一个简单的用法是,例如,我的 CD 的 MP3 压缩器创建了 '01) Bla.mp3',而我更喜欢将它们存储为 'Artist - Bla.mp3'。将 '\d{2}\)' 作为正则表达式(不带引号)输入,将指示正则表达式引擎搜索两个数字后跟一个 ')’。此匹配可以替换为艺术家的姓名。
代码
该代码是一个简单的 MFC 对话框,包含两个额外的类
KFrnDirectoryScanner
- 围绕boost::filesystem
的薄包装器KFrnMoveFile
- 执行实际重命名的函数对象
唯一的注意事项是,最好先拍摄目录内容的快照,然后再递归调用刚刚重命名的文件。
构建
原始代码是用 Visual Studio 2003 构建的。你需要拥有 Boost(版本 1.33)以及上述库的 DLL(请参阅 Boost 的文档或我的另一篇文章 '为 Visual Studio 构建 Boost 库')。Visual Studio 2017 版本不再需要 Boost,因为 C++ 现在包含了正则表达式和文件系统(C++17)。
有改进空间
可能也需要
- 一个浏览按钮
- 一个保存历史记录的组合框
PowerToys
微软似乎已将一个带有正则表达式选项的 文件重命名 工具添加到 PowerToys 中。这使得这个工具和文章基本上已经过时了。
历史
- 2005 年 9 月 21 日:初始发布
- 2018 年 2 月 19 日:更新为 Visual Studio 2017