使用原始文件名的一部分进行重命名的 DOS 命令

使用原始文件名的一部分进行重命名的 DOS 命令

我有许多文件名称如下:
YYY.XXXXXX

我需要编写一个 DOS 批处理命令来重命名,如下所示:
YYYXXXXXX.ZZZ

YYY 和 ZZZ 是固定字符串,只有 XXXXXX 是可变的。

尝试过这个,但没有成功:
rename YYY.?????? YYY??????.ZZZ

答案1

您可以使用该for语句来执行此操作,因为它允许您分别访问文件名和扩展名:

for /f "tokens=1* delims=." %i in ('dir /b yyy.*') do ren "%i.%j" "%i%j.zzz"

使用tokens=1,2 delims=.会导致它将返回的值拆分dir /b yyy.*为和.变量,其中是文件名(或“yyy”),是变量扩展名(不带前导点)。%i%j%i%j.

如果您直接从命令提示符输入上述命令,请使用该命令。在批处理文件中,您需要将所有符号重复两次,%如下所示:

for /f "tokens=1* delims=." %%i in ('dir /b yyy.*') do ren "%%i.%%j" "%%i%%j.zzz"

确保从所有yyy.xxxxxx文件所在的文件夹运行此命令。

答案2

需要注意的是,在尝试使用ren或任何其他命令之前,请先尝试一下echo以查看会执行什么操作,因此不要:

for /f "tokens=1* delims=." %i in ('dir /b yyy.*') do ren "%i.%j" "%i%j.zzz"

首先执行(查看将运行哪些命令):

for /f "tokens=1* delims=." %i in ('dir /b yyy.*') do @(echo ren "%i.%j" "%i%j.zzz")

输出显示命令是你想要的之后,只需删除echo

相关内容