It took around 4.5 seconds to find 2 identical search.bat files in different directories using s*.bat as the search pattern. What do I have to do to have it work like this ? search.bat s*.asm without the search pattern being hard coded into the batch file. I recall using %1. :: Search.bat Dave Benham, mousio, Magnum,skywalker, :: cls @echo off echo. echo Timer has started. echo. call :StartTimer :: :: Add your script functionality here :: @echo off setlocal disableDelayedExpansion set "searchRoot=." set "fileMask=s*.bat" set "prior=noMatch" for /f "tokens=1,2 delims=?" %%A in ( '(for /r "%searchRoot%" %%F in ("%fileMask%"^) do @echo %%~zF:%%~nxF?%%~fF^)^|sort' ) do ( set "current=%%A" setlocal enableDelayedExpansion if !prior! equ !current! ( if defined priorFile ( echo( echo !priorFile! ) endlocal echo %%B set "priorFile=" ) else ( endlocal set "prior=%%A" set "priorFile=%%B" ) ) call :StopTimer call :DisplayTimerResult pause goto :EOF :StartTimer :: Store start time set StartTIME=%TIME% for /f "usebackq tokens=1-4 delims=:., " %%f in (`echo %StartTIME: =0%`) do set /a Start100S=1%%f*360000+1%%g*6000+1%%h*100+1%%i-36610100 goto :EOF :StopTimer :: Get the end time set StopTIME=%TIME% for /f "usebackq tokens=1-4 delims=:., " %%f in (`echo %StopTIME: =0%`) do set /a Stop100S=1%%f*360000+1%%g*6000+1%%h*100+1%%i-36610100 :: Test midnight rollover. If so, add 1 day=8640000 1/100ths secs if %Stop100S% LSS %Start100S% set /a Stop100S+=8640000 set /a TookTime=%Stop100S%-%Start100S% set TookTimePadded=0%TookTime% goto :EOF :DisplayTimerResult :: Show timer start/stop/delta echo Started: %StartTime% echo Stopped: %StopTime% echo Elapsed: %TookTime:~0,-2%.%TookTimePadded:~-2% seconds goto :EOF