我有许多文件名称如下:
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
。