@ECHO OFF
TITLE 根据文件修改时间批量命名
COLOR 0a
echo ----------------------------------------------
echo 根据文件修改时间批量命名 by FeikeQ
echo ----------------------------------------------
:: 1.用dir命令列出这个批处理所在有那个文件夹下的所有文件
for /f "tokens=*" %%a in (
'dir * /s /a /b'
) do (
:: 2.判断文件名,如果文件名不等于这个批处理自身的文件名,就做重命名操作
if "%%~a" neq "%~0" (
:: 3.因为后面要对变量进行重新编辑,所以要启用延迟环境变量功能
SETLOCAL ENABLEDELAYEDEXPANSION
:: 4.用%%~t这个功能来取得文件修改的时间
set newFileName=%%~ta
:: 5.取得时间的前4位加第5个取2位第8....,再加上原来的文件名
set "newFileName=!newFileName:~0,4!-!newFileName:~5,2!-!newFileName:~8,2!-!newFileName:~11,2!!newFileName:~14,2!_%%~nxa"
:: 6.把原来的文件名重命名为 时间+文件名 的方式
ren "%%a" "!newFileName!"
echo (将 "%%a" 更名为 "!newFileName!")
::7.一个循环结束之后把变量延迟功能关闭,避免内存中留有原来的内容。
ENDLOCAL
)
)
PAUSE