递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 621|回复: 1
打印 上一主题 下一主题

[视窗] 用正则式批量更名简洁

[复制链接]

22

主题

83

帖子

707

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
707
跳转到指定楼层
楼主
发表于 2025-1-9 23:26:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
将当前目录下所有形如 "甲-乙.*" 的文件重命名为 "乙-甲.*"

甲-乙.* 正则式表示为 (.*)-(.*)\\.(.*)

乙-甲.* 正则式表示为 $2-$1.$3

命令如下:用正则式批量更名 ("(.*)-(.*)\\.(.*)", "$2-$1.$3")

甲-乙.* 就可以重命名为 乙-甲.*

只要变换相应的正则式文本,就可以在当前目录下,批量重命名文件
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 包 火山.程序

  3. 类 启动类 <公开 基础类 = 程序类>
  4. {
  5.     方法 启动方法 <公开 类型 = 整数>
  6.     {
  7.         // 将当前目录下所有形如 "甲-乙.*" 的文件重命名为 "乙-甲.*"
  8.         用正则式批量更名 ("(.*)-(.*)\\.(.*)", "$2-$1.$3")
  9.         返回 (0)
  10.     }

  11.     方法 用正则式批量更名 <公开 折叠 折叠2 @禁止流程检查 = 真 @视窗.外部头文件 = "<filesystem>\r\n<iostream>\r\n<string>\r\n<regex>"
  12.             @视窗.附加编译参数 = "cpp: /std:c++17">
  13.     参数 正则式甲 <类型 = 文本型>
  14.     参数 正则式乙 <类型 = 文本型>
  15.     {
  16.         @ const wchar_t* pattern = @<正则式甲>.GetText();
  17.         @ const wchar_t* replacement = @<正则式乙>.GetText();
  18.         @ std::wregex regexPattern(pattern);
  19.         @ std::wsmatch match;
  20.         @ std::wstring newName;
  21.         @ for (const auto& entry : std::filesystem::directory_iterator(L".")) {
  22.         @ if (entry.is_regular_file()) {
  23.         @ std::wstring filename = entry.path().filename().wstring();
  24.         @ if (std::regex_match(filename, match, regexPattern)) {
  25.         @ newName = std::regex_replace(filename, regexPattern, replacement);
  26.         @ std::filesystem::rename(entry.path(), newName);
  27.         @ std::wcout << L"Renamed: " << filename << L" -> " << newName << std::endl;
  28.         @ }
  29.         @ }
  30.         @ }
  31.     }
  32. }
复制代码



回复

使用道具 举报

88

主题

981

帖子

5151

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5151
沙发
发表于 2025-1-10 18:18:56 | 只看该作者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-3-4 06:48 , Processed in 0.088867 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表