批量重命名特定文件,将字符添加到文件名

Batch rename specific files adding char to filename

我想将 "a" 添加到文件名中的特定位置,但不是目录中的所有文件。

文件均为pdf文件,文件名不同编号,格式如下:
x.pdf

x_x.pdf

x 的范围是 1-999。要重命名的文件是所有在“_”后有 2 个或 3 个字符的文件。新文件名应该在 _
之后有一个 "a" 在这个例子中,粗体文件应该在 _

之后有一个 "a"

0.pdf
0_34.pdf
10.pdf
10_1.pdf
10_10.pdf
10_111.pdf

我正在尝试做类似 IF exist *_??.pdf ren *_a??.pdf (
的事情 或者创建一个循环 for %%o in (*_??.pdf) do ren "%%o" "*_a??.pdf"
然后用三个做一个???。看起来我不是很接近,因此我请你们帮忙! :)

ren 是一个非常古怪的命令。有人在这里做了完整的研究 https://superuser.com/questions/475874/how-does-the-windows-rename-command-interpret-wildcards

或者您可以使用批量重命名命令http://www.bulkrenameutility.co.uk/Command.php

您可以试试下面的代码:

for /F "eol=| tokens=1,* delims=_" %%E in ('
    dir /B /A:-D "?*_??*.pdf" ^| findstr /I /R /C:"^[0-9][0-9]*_[0-9][0-9][0-9]*\.pdf$"
') do (
    ECHO ren "%%E_%%F" "%%E_a%%F"
)

这里我使用的是 for /F 而不是标准的 for 循环,因为目录内容在循环迭代时被修改,这可能会导致麻烦,据此:。使用 for /F 解析 dir /B 的输出,在 重命名任何项目之前 读取目录内容。

findstr 命令行在这里构成了一个额外的过滤器,因此只有遵循您的命名规则的文件才会受到重命名的影响。如果不需要,请删除 findstr 命令和 ^|

出于测试目的,我将 ECHO 添加到 ren 命令,因此要重命名任何文件,请将其删除。