PowerRename 实用工具

PowerRename 是一种批量重命名工具,它使你能够:

  • 修改大量文件的文件名,而不为所有文件提供相同名称。
  • 对文件名的目标部分执行搜索和替换。
  • 对多个文件执行正则表达式重命名。
  • 在完成批量重命名之前,在预览窗口中检查预期重命名结果。
  • 完成后撤消重命名操作。

演示

在此演示中,文件名为“foo”的所有实例都会替换为“foobar”。 由于所有文件的名称都是唯一的,因此需要很长时间才能逐个手动完成此操作。 PowerRename 可实现单次批量重命名。 请注意,通过资源管理器 的“撤消重命名”(Ctrl+Z) 命令可以撤消上次更改。

PowerRename 演示

PowerRename 窗口

在 WindowsFile Explorer 中选择文件后,右键单击并选择重命名为 PowerRename(仅在 PowerToys 中启用时才会显示)。 会显示所选项的数量,以及搜索和替换值、选项列表以及显示搜索结果和输入的替换值的预览窗格。

PowerRename 菜单屏幕截图

搜索内容

输入文本或正则表达式以在所选内容中查找包含与输入匹配的条件的文件。 预览窗格中会显示匹配项

替换为

输入文本以替换先前输入的搜索值。 可以在预览窗格中查看原始文件名和重命名的文件名。

Use regular expressions

如果选中,则搜索值会解释为正则表达式 (regex)。 替换值还可以包含 regex 变量(请参阅以下示例)。 如果清除,则搜索值会解释为纯文本,以替换为替换字段中的文本。

有关扩展regex功能的设置菜单中使用 Boost 库选项的详细信息,请参阅“正则表达式”部分

匹配所有出现的对象

如果选中,则搜索字段中文本的所有匹配项都会替换为替换文本。 否则,只会替换搜索文本在文件名中的第一个实例

例如,假设文件名为:powertoys-powerrename.txt

  • 搜索:power
  • 重命名为:super

重命名的文件的值会生成:

  • 匹配清除的所有匹配项:supertoys-powerrename.txt
  • 匹配选中的所有匹配项:supertoys-superrename.txt

区分大小写

如果选中,则在搜索字段中指定的文本仅在文本大小写相同时才与项中的文本匹配。 默认情况下,大小写匹配将不区分大小写。

应用对象:仅文件名

操作仅修改文件名称。 例如:txt.txtNewName.txt

应用对象:仅扩展名

操作仅修改文件扩展名。 例如:txt.txttxt.NewExtension

包含文件

清除会导致操作不包括文件。

包括文件夹

清除会导致操作不包括文件夹。

Include subfolders

清除会导致操作不包括文件夹中的文件。 默认情况下会包括所有子文件夹项。

文本格式

在四个选项之间进行选择,以将项转换为全部小写、全部大写、标题大小写(句子的第一个字符大写)或每个单词首字母大写。

枚举项目

如果选择,则可以将以下模式用作替换为文本的一部分:

变量模式 说明
${} 一个简单的计数器,将从第一个重命名的文件的零开始。
${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

使用文件创建日期和时间进行替换

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

变量模式 说明
$YYYY 由完整的四位或五位数字表示的年份,具体取决于所使用的日历。
$YY 仅由最后两位数字表示的年份。 会为一位数年份添加前导零。
$Y 仅由最后一位数字表示的年份。
$MMMM 月份的名称。
$MMM 月份的缩写名称。
$MM 表示为数字的月份,对于一位数月份使用前导零。
$M 表示为数字的月份,对于一位数月份不使用前导零。
$DDDD 星期几的名称。
$DDD 星期几的缩写名称。
$DD 表示为数字的月份日期,对于一位数日期使用前导零。
$D 表示为数字的月份日期,对于一位数日期不使用前导零。
$hh 小时,对于一位数小时使用前导零。
$h 小时,对于一位数小时不使用前导零。
$mm 分钟,对于一位数分钟使用前导零。
$m 分钟,对于一位数分钟不使用前导零。
$ss 秒,对于一位数秒使用前导零。
$s 秒,对于一位数秒不使用前导零。
$fff 由完整的三位数字表示的毫秒。
$ff 仅由前两位数字表示的毫秒。
$f 仅由第一位数字表示的毫秒。

例如,假设文件名为:

  • powertoys.png创建于 2020/11/02(11 月 2 日)
  • powertoys-menu.png创建于 2020/11/03(11 月 3 日)

输入条件以重命名项:

  • 搜索:powertoys
  • 重命名为:$MMM-$DD-$YY-powertoys

重命名的文件的值会生成:

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

正则表达式

简单搜索和替换足够用于大多数用例。 但在某些情况下,复杂的重命名任务可能需要更多控制。 正则表达式可提供帮助。

正则表达式为文本定义搜索模式。 它们可用于搜索、编辑和操作文本。 正则表达式定义的模式可以对给定字符串匹配一次、多次或根本不匹配。 PowerRename 使用在现代编程语言中通用的 ECMAScript 语法。

若要启用正则表达式,请选中“使用正则表达式”。 注意:使用正则表达式时,可能需要选中匹配所有出现的对象

若要使用 Boost 库而不是标准库,请在 PowerToys 设置中选中使用 Boost 库选项。 它能实现标准库不支持的扩展功能,例如 lookbehind

正则表达式示例

简单匹配示例。

搜索内容 说明
^ 匹配文件名的开头(零大小)
$ 匹配文件名的末尾(零大小)
.* 匹配名称中的所有文本
^foo 匹配以“foo”开头的文本
bar$ 匹配以“foo”结尾的文本
^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)(\d{2})-(\d{2})-(\d{4}) $3-$2-$1 移动文件名中的部件:“29-03-2020”会变为“2020-03-29”
^(.{n})(.*)(.*)(.{n})$ $1foo$2 分别从距离开头或结尾 n 个字符处插入“foo”
^.{n}.{n}$ 分别从开头或结尾截断 n 个字符

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

可联机获得很好的示例/速查表来为你提供帮助:

正则表达式教程

带示例的 JavaScript 正则表达式教程

文件列表筛选器

可以在 PowerRename 中使用筛选器来缩小重命名结果的范围。 使用预览窗格可检查预期结果

  • 预览窗格中的第一列“原始”会在以下状态之间切换

    • 选中:选择文件进行重命名
    • 清除:未选择文件进行重命名(即使它符合搜索条件中输入的值)
  • 预览窗格中的第二列“已重命名”可以进行切换

    • 默认预览会显示所有选择的文件,其中只有与搜索条件匹配的文件才会显示更新后的重命名值
    • 选择“已重命名”标题会将预览切换为仅显示将重命名的文件。 原始选择内容中的其他所选文件将不可见。

PowerToys PowerRename 筛选器演示

设置

可从设置配置其他选项,如下所述:

设置 说明
将 PowerRename 显示在 PowerRename 是显示为默认选项之一还是仅显示在扩展上下文菜单中
隐藏上下文菜单中的图标 隐藏上下文菜单中的 PowerRename 图标
为“搜索和替换”字段启用自动完成 基于以前的 PowerRename 使用,自动建议要在搜索和替换字段中使用的字词
最大项数 要显示的搜索和替换建议的最大数量
显示最近使用的字符串 打开 PowerRename 时,使用上次使用的值填充搜索和替换字段
使用 Boost 库 启用扩展regex功能。 有关更多详细信息,请参阅正则表达式