home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 March / CHIPCD_3_98.iso / software / share / sharmies / unixdos / data.z / ex08.bat < prev    next >
DOS Batch File  |  1997-11-18  |  1KB  |  39 lines

  1. @echo off
  2. rem ****** FIND DUPLICATE FILES ACROSS ALL DIRECTORIES ******
  3. set DRIVELIST=C: D:
  4. set LINE=1
  5. set LST=work5.tmp
  6. set OUT=files.dup
  7. uecho Collecting all names ...
  8. ufind %DRIVELIST% -show -type f -keyname: -ls > work1.tmp
  9. uecho  Found a total of `wc -lt work1.tmp # cut -f1` files
  10. uecho Sorting all names ...
  11. usort work1.tmp -o work2.tmp
  12. usort -u +0 -1 -t: work2.tmp -o work3.tmp
  13. uecho Finding Duplicates ...
  14. diff -c1 work2.tmp work3.tmp > work4.tmp
  15. grep "^+" work4.tmp | cut "-d|" -f2 | cut -f1 -d: | usort -u > %LST%
  16. wc -lt %LST% | cut -f1 > work7.tmp
  17. uecho  Found a total of @work7.tmp duplicates
  18. rm -rf %OUT%
  19. uecho Preparing output ...
  20. :LOOP
  21.     getlines %LINE% %LINE% %LST% > name.tmp
  22.     if errorlevel 1 goto END
  23.  
  24.     call setenv "NAME=@name.tmp
  25.     uecho -e %LINE% of @work7.tmp : %NAME%
  26.     uecho "=====================================" >> %OUT%
  27.     sed "s:^:^:" ~$NAME > work6.tmp
  28.     sed "s:\.:\\.:g" work6.tmp > work8.tmp
  29.     sed "s:\$:\\$:g" work8.tmp > work6.tmp
  30.     sed "s/$/:/"     work6.tmp > work8.tmp
  31.     grep "@work8.tmp" work2.tmp    >> %OUT%
  32.  
  33.     call setenv "LINE=`expr $LINE + 1`"
  34.     goto LOOP
  35.  
  36. :END
  37. uecho "=====================================" >> %OUT%
  38. umore %OUT%
  39.