![Windows 7 脚本更改部分文件名](https://linux22.com/image/1422254/Windows%207%20%E8%84%9A%E6%9C%AC%E6%9B%B4%E6%94%B9%E9%83%A8%E5%88%86%E6%96%87%E4%BB%B6%E5%90%8D.png)
我有一组文件,其名称格式如下,其中car-#######-NNNNNNN.xxx
#######
是需要作为文件名的一部分保留的一系列数字,并且xxx
是表示文件格式的扩展名,例如“jpg”、“bmp”或“png”,也需要保留。我需要从文件名中删除car-
和 ( 的重复),只留下。-NNNNNNN
-#######
#######.xxx
这可能吗?我该怎么做?
答案1
将此文本复制到文本编辑器(记事本)中,然后将文件保存rename.bat
到文件所在的文件夹中并运行它。
xxx
将该行更改IF %ext% EQU xxx ren %1 "%fnum%.%ext%"
为保存文件的扩展名。
@ECHO 关闭 对于/f“tokens=*”%%i ^ 在('forfiles / d + 0 / c“ cmd / c if @isdir == FALSE echo @file”')^ 执行调用:子程序%%i 暂停 :子程序 设置 fname=%1 设置 ext=%fname:~-4,3% 设置 fnum=%fname:~5,7% REM 回显 %fnum% REM 回显 %ext% 如果 %ext% EQU xxx ren %1 "%fnum%.%ext%"
答案2
Vinayak 的答案看起来不错,如果你#######
始终正好是七个字符。如果字符数可以变化,并且您想按分隔符而不是计数进行操作,请尝试
for /f "delims=-. tokens=1-4" %a in ('dir /b/a-d car-*-*.*') ^
do @echo ren %a-%b-%c.%d %b.%d
运行此命令,如果它显示正确的重命名命令,请删除echo
并再次运行。我将其拆分为两行,以便适合屏幕;如果您愿意,可以将其全部合并为一行(删除^
)。如果您将其放入脚本(批处理文件),请将所有出现的 更改%
为%%
。
警告:如果您的NNNNNNN
并不总是你的#######
例如,您有名为car-1234567-1234567.jpg
和的文件car-1234567-9999999.jpg
,它将重命名找到的第一个文件并为其他文件提供错误消息。