批量将时间追加到到文件前面 [批处理]自动按日期重命名文件名
Time:2021/05/25 20:52:41 Click:
如果时间格式有问题,可以进行调整
set datatime=!data:-=!_!time::=!
可以将:!data:-=! 改为 !time::=!
可以将:!data:/=! 改为 !time::=!
@echo off title 自动按日期重命名文件名 by:小小沧海2012-1-29 setlocal EnableDelayedExpansion ::文件过滤器,请自行按需要更改,如需过滤JPG和AVI文件,则为"*.jpg" "*.avi" set filter="*.*" ::源文件名替换,src为要替换的字符串,dst为要替换为的字符串,dst为空则删除src字符串 set replacesrc=DSC0 set replacedst= ::是否开启执行预览?(开启:N/关闭:Y) set isisdo=N ::---------------------------------------------------------------- :start ::控制变量:“是否执行”,当为Y时真正执行更名操作,否则显示操作预览 set isdo=%isisdo% echo 请把要处理的文件夹拖入此处 set filepath=nul&set /p filepath= ::检查用户输入是否为空,同时还有过滤掉含有空格的"符号 if "%filepath:"=%"=="nul" cls&goto start ::检查用户输入是否为多个空格或只有双引号 set filepath=%filepath:"=% if "%filepath: =%"=="" cls&goto start cd /d %filepath% ::检查用户输入的文件夹是否是一个合法存在的文件夹 if %ERRORLEVEL%==1 cls&echo ×输入的文件夹错误!&goto start :do echo 正在准备开始处理,请稍后... ::取得目标目录下所有符合条件的文件的完全路径名 for /f "delims=" %%n in ('dir /s /b /a:-d %filter%') do ( ::循环遍历取得当前文件的信息,按行分割并过滤掉以空格开头的行 for /f "eol= delims=" %%s in ('dir /-c "%%n"') do ( ::再把过滤后的一行字符串按空格进行分割,取得日期,时间和原文件名 for /f "tokens=1-2 delims= " %%i in ("%%s") do ( ::构造前缀字符串 set data=%%i set time=%%j set datatime=!data:-=!_!time::=! ::构造原文件名字符串,同时替换相应字符 set filesrc=%%~nxn set filesrc=!filesrc:%replacesrc%=%replacedst%! ::构造最终文件名,并使用call将原有的前缀字符串替换掉 call set file=!datatime!-%%filesrc:!datatime!-=%% ::构造结果为:日期_时间-原替换后文件名 if /i !isdo!==y ( echo 执行更名:"%%~nxn"→"!file!" ::真正执行重命名的语句 ren "%%n" "!file!" ) else ( echo 预览更名:"%%~nxn"→"!file!" ) ) ) ) ::如果“是否执行”不为Y则询问是否真正执行操作 if /i %isdo% NEQ y ( echo ----------------------------- echo.&echo 以上为执行预览,是否执行[是:Y/否:N] set isdo=n&set /p isdo= if /i !isdo!==y (goto do) else (cls&goto start) ) echo ----------------------------- echo.&echo 处理完成! pause>nul cls&goto start
上一篇:已经是第一条