PowerRename:批量重命名文件

PowerRename 是 Windows 的批量重命名工具,可以一次快速重命名多个文件。这项 PowerToys 实用工具能够:

  • 修改大量文件的文件名,而不必把所有文件设为同一个名字。
  • 针对文件名中的指定部分搜索并替换。
  • 使用正则表达式批量重命名。
  • 在最终执行前,通过预览窗口检查预期结果。
  • 完成后撤销重命名操作。

演示

演示中把文件名里所有的“foo”替换为“foobar”。由于每个文件的名称都不一样,逐个手动处理会花费很长时间。PowerRename 可以一次完成这批重命名。资源管理器的撤销重命名(Ctrl+Z)命令能够撤销上一次更改。

官方 PowerRename 批量重命名演示

PowerRename 窗口

在 Windows 文件资源管理器中选中文件,右键单击并选择使用 PowerRename 重命名。只有在 PowerToys 中启用了该功能,这个选项才会出现。窗口显示所选项、搜索与替换值、选项列表,以及根据输入内容显示结果的预览窗格。

官方 PowerRename 菜单截图

搜索内容

输入文本或正则表达式,在所选文件中寻找符合条件的文件。匹配项会出现在预览窗格中。

替换为

输入用于替换搜索内容的文本。在预览中可以同时查看原始文件名与重命名后的名称。

使用正则表达式

选中后,搜索值会被解释为正则表达式(regex);替换值也可以包含正则变量,见下文示例。不选中时,搜索值会被视为普通文本,并由替换字段中的文本替换。

设置菜单中使用 Boost 库选项提供扩展正则功能,详见正则表达式一节。

匹配所有出现的位置

选中后,搜索文本的所有匹配项都会被替换;否则只替换文件名里第一次出现的匹配。

例如文件名为 powertoys-powerrename.txt,搜索 power,替换为 super:

  • 未选中匹配所有位置:supertoys-powerrename.txt
  • 选中匹配所有位置:supertoys-superrename.txt

区分大小写

选中后,搜索文本仅匹配大小写完全相同的文本。默认不区分大小写。

应用到:仅文件名

只修改名称部分。例如:txt.txt → NewName.txt。

应用到:仅扩展名

只修改扩展名。例如:txt.txt → txt.NewExtension。

包含文件

取消选中后,操作不包含文件。

包含文件夹

取消选中后,操作不包含文件夹。

包含子文件夹

取消选中后,操作不包含文件夹内的文件。默认包含所有子文件夹项目。

文本格式

可以在四种格式中选择:全部小写、全部大写、标题大小写(句子首字符大写),或每个单词首字母大写。

枚举项目

选中后,可以在替换为文本中使用以下模式:

变量模式 说明
${} 从首个重命名文件的0开始的简单计数器。
${increment=X} 使用自定义增量的计数器。
${padding=X} 为数字设置指定数量前导零的计数器。
${start=X} 使用自定义起始值的计数器。

同一替换字符串可以包含多个计数器,也可以组合自定义选项。例如,搜索文本为 a,文件为 a.jpg、ab.jpg、abc.jpg;替换为 Image_${padding=4;increment=2;start=10}_ 后得到:

  • Image_0010_.jpg
  • Image_0012_b.jpg
  • Image_0014_bc.jpg

随机字符串值

选中后,可以把以下模式作为替换为文本的一部分:

变量模式 说明
${rstringalnum=X} 由大写字母、小写字母及0–9数字组成的随机字符串,长度可自定义。
${rstringalpha=X} 由大写字母及小写字母组成的随机字符串,长度可自定义。
${rstringdigit=X} 由0–9数字组成的随机字符串,长度可自定义。
${ruuidv4} 符合v4规范的随机UUID。

生成的随机字符串默认混合大小写。可通过 PowerRename 的文本格式选项调整生成行为。如果需要带大括号的 UUID,可把 { 和 } 添加到替换输入中,组合成 {${ruuidv4}}。

使用文件创建日期与时间替换

在替换为中输入下表的变量模式,就可以使用文件的创建日期和时间。选择该字段的工具提示,可以查看并选择支持的模式。

变量模式 说明
$YYYY 完整年份,根据日历以四位或五位数字表示。
$YY 年份末两位;一位数时补前导零。
$Y 年份最后一位。
$MMMM 月份名称。
$MMM 月份名称缩写。
$MM 数字月份,一位数时补前导零。
$M 数字月份,一位数时不补前导零。
$DDDD 星期名称。
$DDD 星期名称缩写。
$DD 月内日期,一位数时补前导零。
$D 月内日期,一位数时不补前导零。
$hh 小时,一位数时补前导零。
$h 小时,一位数时不补前导零。
$mm 分钟,一位数时补前导零。
$m 分钟,一位数时不补前导零。
$ss 秒,一位数时补前导零。
$s 秒,一位数时不补前导零。
$fff 完整三位毫秒。
$ff 毫秒的前两位。
$f 毫秒的第一位。

例如,powertoys.png 创建于 2020年11月2日,powertoys-menu.png 创建于 2020年11月3日。搜索 powertoys,替换为 $MMM-$DD-$YY-powertoys,结果如下:

  • Nov-02-20-powertoys.png
  • Nov-03-20-powertoys-menu.png

使用照片元数据(EXIF 或 XMP)替换

重命名照片时,可以在替换为字段使用 EXIF 或 XMP 元数据。在组合框中选择 EXIF/MDF 选项后,以下变量模式可用。工具提示提供所有支持的模式,便于快速插入。

变量模式 说明
$CAMERA_MAKE 相机制造商名称
$CAMERA_MODEL 相机型号名称
$LENS 镜头型号名称
$ISO ISO感光度值
$APERTURE F值光圈
$SHUTTER 快门速度
$FOCAL 焦距(毫米)
$FLASH 闪光灯状态(开/关)
$WIDTH 图像宽度(像素)
$HEIGHT 图像高度(像素)
$AUTHOR 图像作者/艺术家
$COPYRIGHT 版权信息
$LATITUDE GPS纬度
$LONGITUDE GPS经度
$ALTITUDE GPS海拔高度(米)
$DATE_TAKEN_YYYY 拍摄年份(4位)
$DATE_TAKEN_YY 拍摄年份(2位)
$DATE_TAKEN_MM 拍摄月份(01–12)
$DATE_TAKEN_DD 拍摄日(01–31)
$DATE_TAKEN_HH 拍摄小时(00–23)
$DATE_TAKEN_mm 拍摄分钟(00–59)
$DATE_TAKEN_SS 拍摄秒(00–59)
$EXPOSURE_BIAS 曝光补偿值
$ORIENTATION 图像方向
$COLOR_SPACE 色彩空间信息
$ALTITUDE GPS海拔高度(米)

正则表达式

大多数场景中,简单的搜索和替换已经足够。但复杂重命名有时需要更多控制,正则表达式可以帮助完成这些任务。

正则表达式定义文本搜索模式,可用于搜索、编辑和处理文本。对于给定字符串,一个模式可能匹配一次、多次,也可能完全不匹配。PowerRename 使用现代编程语言中常见的 ECMAScript 语法。

要启用正则表达式,选中使用正则表达式。使用时通常还需要选中匹配所有出现的位置。

如果要使用 Boost 库代替标准库,在 PowerToys 设置中选中使用 Boost 库。它支持标准库不支持的扩展功能,例如后行断言(lookbehind)。

正则表达式示例

简单匹配示例:

搜索内容 说明
^ 匹配文件名开头(零长度)
$ 匹配文件名末尾(零长度)
.* 匹配名称中的所有文本
^foo 匹配以foo开头的文本
bar$ 匹配以bar结尾的文本
^foo.*bar$ 匹配以foo开头、以bar结尾的文本
.+?(?=bar) 匹配bar之前的全部内容
foo[\s\S]*bar 匹配foo与bar之间的全部内容,包含foo和bar

以下是匹配与变量示例。捕获组由括号 () 定义。使用 $ 加数字引用捕获组:$1 是第一组,$2 是第二组,依此类推。使用这些变量时,必须选中匹配所有出现的位置。

搜索内容 替换为 说明
(.*).png foo_$1.png 在PNG文件现有名称前添加foo_
(.*).png $1_foo.png 在PNG文件现有名称后添加_foo
(.*) $1.txt 给现有文件追加.txt扩展名
(^\w+\.$)|(^\w+$) $2.txt 仅在现有文件名没有扩展名时追加.txt
(\d\d)-(\d\d)-(\d\d\d\d) or (\d{2})-(\d{2})-(\d{4}) $3-$2-$1 移动文件名的部分:29-03-2020变为2020-03-29
^(.{n})(.*) or (.*)(.{n})$ $1foo$2 分别在距名称开头或末尾n个字符处插入foo
^.{n} or .{n}$ 无 分别从名称开头或末尾截去n个字符

请 Copilot 协助生成正则表达式

可以向 Copilot 请求 AI 帮助,生成简单或复杂的正则表达式,并根据要求定制提示。原文示例提示如下:

Generate a regular expression to match a string that starts with "foo" and ends with "bar" and has at least six letters and two numeric characters in between them.

Copilot 基于 AI,可能给出意外结果或错误。详见 Copilot 常见问题。

学习正则表达式的其他资源

以下示例和速查资料可以提供帮助:

文件列表筛选器

可以使用筛选器缩小重命名结果范围,并在预览中检查预期结果。

  • 原始列是预览第一列:选中表示文件参与重命名;取消选中则不参与,即使名称符合搜索条件。
  • 重命名后列是第二列:默认显示所有选中文件,仅匹配搜索条件的文件显示更新后的名称。点击该列表头,可切换为只显示将被重命名的文件,原始选择中的其他文件会隐藏。
官方 PowerRename 文件列表筛选演示

设置

设置中还可以配置以下选项:

设置 说明
PowerRename显示位置 在默认右键菜单或仅在扩展右键菜单中显示PowerRename。
隐藏右键菜单图标 隐藏右键菜单中的PowerRename图标。
启动时恢复标志 启用后,记住上次选择的选项和标志,并在下次启动时恢复。
启用搜索与替换字段自动补全 根据以往使用记录,为搜索和替换字段自动建议文本。
项目数量上限 显示的搜索与替换建议的最大数量。
显示最近使用的字符串 打开PowerRename时,用上次使用的值填充搜索和替换字段。
使用Boost库 启用扩展正则功能,详见正则表达式一节。

安装 PowerToys

此工具属于面向高级用户的 Microsoft PowerToys 实用工具集。它提供一组用于调整和简化 Windows 使用体验、提高效率的工具。安装方法见安装 PowerToys。

来源:Microsoft Learn:PowerRename。作者:Microsoft 文档团队。依据官方英文源文重新汉化、调整排版并添加示例核对提示,代码和变量保留。文档采用 CC BY 4.0,按现状提供,不作保证。官方截图及演示的权利归原权利人。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容