难点在第3点,必须知道文件名的命名规则,因BAT对文件的排序和WIN往往不一样。
BAT中13.txt排在2.txt前面,是按文件名逐字比较。而WIN中按数字大小比较。
追问图片的文件名格式都是三位数 001 002 003
追答还有一点:如果像aaZ这样文件夹下,里面还有aa1文件夹,那么aaZ中最后一个文件,是仅指aaZ当前文件夹中最后一个,还是也要把aa1中的文件都要算进来?
追问aaZ当前文件夹中最后一个即可
追答一定要备份源文件
@echo off
for /f "delims=" %%a in ('dir /ad/s/b') do (
set "str=%%~nxa"
setlocal enabledelayedexpansion
if not "!str:Z=!"=="!str!" set flag=1
if not "!str:正=!"=="!str!" set flag=1
if defined flag (
for /f "delims=" %%b in ('dir /a-d/b "%%a"') do set "file=%%a\%%b"&set "ex=%%~xb"
ren "!file!" "TYT-1!ex!"
)
endlocal
)
pause
追问能不能再加上一个条件,只修改jpg或tif图像文件
追答可以。那最后一个文件就是指最后一个jpg或tif,而不是所有文件的最后一个,对吧?
追问对
追答@echo off
for /r /d %%a in (*) do (
set "str=%%~nxa"
setlocal enabledelayedexpansion
if not "!str:Z=!"=="!str!" set flag=1
if not "!str:正=!"=="!str!" set flag=1
if defined flag for /f "delims=" %%b in ('dir /a-d/b "%%a"^|findstr /i /r /e ".jpg .tif"') do set "file=%%a\%%b"&set "ex=%%~xb"
if defined ex ren "!file!" "TYT-1!ex!"
endlocal
)本回答被提问者采纳