批量重命名特定文件,将字符添加到文件名
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
命令,因此要重命名任何文件,请将其删除。
我想将 "a" 添加到文件名中的特定位置,但不是目录中的所有文件。
文件均为pdf文件,文件名不同编号,格式如下:
x.pdf
或
x_x.pdf
x 的范围是 1-999。要重命名的文件是所有在“_”后有 2 个或 3 个字符的文件。新文件名应该在 _
之后有一个 "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
命令,因此要重命名任何文件,请将其删除。