我想添加" a"一个文件名中的特定位置,但不是dir中的所有文件。
这些文件都是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"
然后用三个做一个???它看起来不是非常接近,因此我请求你们帮忙! :)
答案 0 :(得分:0)
ren是一个非常古怪的命令。有人在这里做了一个完整的研究https://superuser.com/questions/475874/how-does-the-windows-rename-command-interpret-wildcards
或者您可以使用批量重命名命令http://www.bulkrenameutility.co.uk/Command.php
答案 1 :(得分:0)
您可以尝试以下代码:
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
循环,因为在循环迭代时修改了目录内容,这可能会导致麻烦,根据这个:At which point does for
or for /R
enumerate the directory (tree)?。使用for /F
解析dir /B
的输出,在重命名任何项目之前,将读取目录内容。
此处findstr
命令行构成了一个额外的过滤器,因此只有符合命名规则的文件才会受到重命名的影响。如果您不想要,请删除findstr
命令和^|
。
出于测试目的,我将ECHO
添加到ren
命令,因此要重命名所有文件,将其删除。