• Announcements

    • xper

      MSFN Sponsorship and AdBlockers!   07/10/2016

      Dear members, MSFN is made available via subscriptions, donations and advertising revenue. The use of ad-blocking software hurts the site. Please disable ad-blocking software or set an exception for MSFN. Alternatively, become a site sponsor and ads will be disabled automatically and by subscribing you get other sponsor benefits.
Sign in to follow this  
Followers 0
FixitUP

Batch file for searching for file duplicates

3 posts in this topic

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

0

Share this post


Link to post
Share on other sites

Are you really wanting to code your own duplicate finder script? Out of curiosity, why? Wouldn't just using one of the many free duplicate finder programs be easier and faster? What are you really trying to accomplish?

Cheers and Regards

0

Share this post


Link to post
Share on other sites

You do realise of course that the code does not find identical files, it finds same name files with same filesizes; there is a difference!

Andy, I'd appreciate it if you exhaused one avenue before taking another, it isn't nice to post code between forums simultaneously. You've posted Daves code from the other forum here and at least gunsmokingmans from another of your Topics here, under the name smokingmangun, on the other. Please do not post any of my code nor that of our Members on other Forums without our permission.

set "fileMask=%~1"

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.