@echo off setlocal enabledelayedexpansion ::Change these as necessary. 'Since' must be in the format yyyymmdd set BaseDir=c:\ set Since=20050901 for /R %BaseDir% %%f in (*.*) do call :ProcessFile "%%f" goto :Done :ProcessFile ::Get filename and date/time set Filename=%1 set FileDate=%~t1 ::Get year, convert to 4-digit year :: -WinXP format '08/02/2005 11:57 AM' :: -Win2k format '09/01/05 11:06p' :: -assume 2-digit years >=70 are 19xx, and <70 are 20xx Set FileYear=%FileDate:~8,1%% if "%FileYear%"==" " ( set FileYear=%FileDate:~6,2% if !FileYear! GEQ 70 ( set /a FileYear=!FileYear!+1900 ) else ( set /a FileYear=!FileYear!+2000 ) ) else ( set FileYear=%FileDate:~6,4% ) set FormatDate=%FileYear%%FileDate:~0,2%%FileDate:~3,2% if "%FormatDate%" GEQ "%Since%" echo %Filename% change on %FileDate% ::this eof indicates end of subroutine goto :eof :Done echo This is done