@echo off
setlocal enabledelayedexpansion
for /f %%i in ('dir /a-d /b *.*') do (
set a=%%~ni
set b=%%~xi
set a=!a:~0,8!
ren %%i !a!.!b!
)
存为bat,放在该文件夹下运行即可,只改当前文件夹里所有文件的名称,子目录里的不会改
罐头梨子的答案弊端就在于如果D后边数字大于9,那么截取的位置将发生变化,导致重命名失败.
以下代码可以解决,以"_"为分隔,更精确一些。
@echo off&setlocal enabledelayedexpansion
for /r %%a in (*.txt) do (
set "fn=%%~nxa"
set "ff=%%~xa"
for /f "tokens=1-5 delims=_" %%a in ("!fn!") do (
set "newfn=%%a_%%b_%%c_%%d"
)
ren "!fn!" "!newfn!!ff!"
)