@echo off
setlocal enabledelayedexpansion
set filespec=%*
if "%filespec%"=="" goto :help
for /f "delims=" %%F in ('dir/a-d/b/od %filespec%') do (
set fn=%%~tF
set/a hour=0x!fn:~11,2!
if !hour! GTR 10 set/a hour=(!hour!-6^) %% 12
if "!fn:~17,2!"=="PM" set/a hour+=12
if !hour! LSS 10 set hour=0!hour!
set root=%%~dpF
set ext=%%~xF
set nxt=00
set fn=!fn:~6,4!!fn:~0,2!!fn:~3,2!_!hour!!fn:~14,2!
if exist "!root!!fn!!nxt!!ext!" for /L %%I in (59,-1,1) do (
set dup=0%%I
if not exist "!root!!fn!!dup:~-2!!ext!" set nxt=!dup:~-2!
)
@echo ren "%%F" "!fn!!nxt!!ext!"
ren "%%F" "!fn!!nxt!!ext!"
)
dir !root!*!ext! | find/v "Volume"
goto :end
:help
@echo.
@echo Renames files to the date and time the file was created,
@echo preserving the file extention: YYYYMMDD_HHMMSS.ext
@echo Synatx: %0 filespec [/s]
@echo A filespec (such as *.jpg) must be specified.
@echo /s will recurse sub-folders and rename files matching the filespec.
@echo Example: %0 E:\DCIM\*.jpg /s
:end
endlocal
Have a question about something in this article? You can receive help directly from the article author. Sign up for a free trial to get started.
Comments (4)
Author
Commented:Author
Commented:scriptname.bat F:\DCIM\100\*.jpg
Author
Commented:My previous comment is in error - the parameter must be the filespec only, not the path, so:
cd/d F:\DCIM\100
scriptname.bat .jpg
Author
Commented: