根据文件修改时间批量命名BAT

@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


评论