如何使用命令提示符重命名文件

3

我目前正在尝试使用命令提示符重命名多个文件,但我无法使其工作。

所以这就是我想要做的事情。

我正在尝试重命名这些文件。

file_aaa_001.jpeg
file_bbb_002.jpeg
file_ccc_003.jpeg

以下是相关文件:
001.jpeg
002.jpeg
003.jpeg

我知道这是超级初学者级别的问题,但如果能得到一些帮助就太好了。

编辑:序列中的“aaa”不一定是相同的三个字母,它可以是任意数量的随机字母。 为了更清楚地表达,我想删除从开头到第二个“_”之间的字母。谢谢。


1
aaa bbb 序列是否继续超过 zzz - byxor
实际上,这些序列非常随机,可能是“abs”,“dba”或其他任何东西。因此,为了澄清,我只需要文件具有第二个“_”及其后面的字符。 - 亀田知明
1
看一下Mooniker。这是我朋友写的一个命令行实用程序,可以重命名多个文件中的特定模式。不过你需要自己编译它才能使用(而且我认为它不支持正则表达式)。 - byxor
@BrandonIbbotsonth 谢谢分享。我会看一下的!! - 亀田知明
文件名中是否总是恰好有两个下划线“_”?文件名的前两部分“file”和“aaa”等是否也可能包含数字? - aschipfl
2个回答

5

假设你只需要去掉前缀,使用

ren "*.*" "/////////*.*"

如果您想谨慎起见,只选择以“file_”为前缀、后跟三个字符和序列之前的破折号,并且只选择具有jpeg扩展名的文件。

ren "file_???_*.jpeg" "/////////*.*"

一如既往,您需要在运行/修改命令之前先备份文件夹。


1
好的,知道了。你可以用勾号接受我的答案,或者等待其他人提供更好的方法/解释。 - Martheen
@Martheen +1 我从未见过这种方法,也没有在搜索中找到任何相关信息。这个方法有文档记录吗? - aphoria
@aphoria 我也在 SO 的其他问题中找到了关于重命名的答案,其中有数十个(未被接受的)答案之一。该答案还提到他们从未真正找到合法的文档。 - Martheen

0
假设每个文件名中始终恰好有两个下划线字符,并且它们之间至少有一个其他字符,您可以使用for /F循环来拆分文件名:
for /F "eol=: delims=" %%F in ('
    dir /B "*_*_*.jpeg"
') do (
    for /F "tokens=2* delims=_" %%I in ("%%~nF") do (
        rename "%%~F" "%%J%%~xF"
    )
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接