65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Boost Regex 和 Boost 文件系统进行文件重命名

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.33/5 (3投票s)

2005年9月9日

CPOL

2分钟阅读

viewsIcon

51946

downloadIcon

1299

使用 Boost Regex 和 Boost 文件系统进行文件重命名

Sample Image - File_rename_using_regex.jpg

引言

作为一名专业的程序员,你经常需要重命名大量的文件。虽然理论上 `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
© . All rights reserved.