1iJaCk

dodup.bat

Jul 4th, 2017
206
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 4.66 KB | None | 0 0
  1. :: by JaCk | Release 07/04/2017 | https://pastebin.com/t1HXcwds | dodup.bat --- uses dupemerge.exe and wmic to locate and merge same files across all your partitions
  2. @echo off && setlocal EnableDelayedExpansion && (for /f "tokens=1 delims==" %%a in ('set dodo_') do set "%%a=") 2>nul 1>nul
  3.  
  4. :::::::::::::::::::::::::::::::::::::::
  5. ::: User Settings :::::::::::::::::::::
  6. ::
  7. set "dodo_DupeMergeBin="               rem Default: Not Set  --- If your dupemerge binary is not in %PATH% then you need to set this.  If you do not know, set this variable.
  8. set "dodo_DupeMergeExclude=%windir%"   rem Default: %windir% --- This is the exclusion list for dupemerge, it shouldn't merge files on that list.
  9. set "dodo_DupeMergeOutLog=%userprofile%\dodo.log"            rem Default: Not Set  --- If you want a log from dupemerge, set a desired qualified/reliative path and name of file, example -- %userprofile%\dmerge.log
  10. set "dodo_DupeMergeQuiet=true"         rem Default: true     --- Tells dupemerge to be quiet. Suppressing any output.  This variable acts like a boolean.
  11. set "dodo_ExcludedDriveLetters="       rem Default: Not Set  --- Tells this script to ignore these drive letters.  Space and/or Comma delineated list is fine. Example: C,F,D S M X
  12. :::::::::::::::::::::::::::::::::::::::
  13.  
  14.  
  15.  
  16. :::::::::::::::::::::::::::::::::::::::
  17. ::: Pre-Processing and Error-Checking :
  18. ::
  19. rem Checking elevated console, print msg and continue
  20. call "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 2>nul 1>nul || (
  21.     echo/
  22.     echo/ Warning: Info: Running in console without admin privileges, not all files can be linked.
  23.     echo/ Info: Continuing.
  24.     timeout /t 5
  25. )
  26.  
  27. rem Checking for binary and searching the path when needed
  28. rem when multiple binaries are located, scrpt will use the last one on the list.
  29. if not defined dodo_DupeMergeBin (
  30.     echo/
  31.     for /f "tokens=1* delims=" %%a in ('where dupemerge.exe') do (
  32.         echo/ Info: Bin: Found binary %%a
  33.         set "dodo_DupeMergeBin=%%a"
  34.     )
  35. )
  36.  
  37.  
  38. rem When Binary var is still unset, print error and leave script
  39. if not defined dodo_DupeMergeBin (
  40.     echo/
  41.     echo/ Error: Fatal: dupemerge binary undefined, download and install it.
  42.     echo/  Info: Direct Download link: http://www.schinagl.priv.at/nt/dupemerge/dupemerge.zip
  43.     echo/  Info: Information Link: http://schinagl.priv.at/nt/dupemerge/dupemerge.html
  44.     goto GimmeOuttaHere
  45. )
  46.  
  47.  
  48. rem Prepending -e param to the exclution param
  49. if defined dodo_DupeMergeExclude (
  50.     set "dodo_DupeMergeExclude=-e !dodo_DupeMergeExclude!"
  51. )
  52.  
  53.  
  54. rem stripping out double quotes from log path -- will be (re-)added later
  55. if defined dodo_DupeMergeOutLog (
  56.     set "dodo_DupeMergeOutLog=!dodo_DupeMergeOutLog:"=!"
  57. )
  58.  
  59.  
  60. rem Test to see if writable, unset variable when not, otherwise prepend the -o param.
  61. if defined dodo_DupeMergeOutLog (
  62.     (echo/) >> "!dodo_DupeMergeOutLog!"
  63.     if !errorlevel! equ 0 (
  64.         set "dodo_DupeMergeOutLog=-o "!dodo_DupeMergeOutLog!""
  65.     ) else (
  66.         echo/
  67.         echo/ Warning: Unable to to write to "!dodo_DupeMergeOutLog!"
  68.         echo/ Info: LOG WILL NOT BE CREATED. Unsetting output log...
  69.         echo/
  70.         set "dodo_DupeMergeOutLog="
  71.     )
  72. )
  73.  
  74.  
  75. rem quiet boolean check and set quiet param
  76. if defined dodo_DupeMergeQuiet (
  77.     echo !dodo_DupeMergeQuiet:~0,1! | findstr /i "y 1 t" 2>nul 1> nul
  78.     if !errorlevel! equ 0 (
  79.         set "dodo_DupeMergeQuiet=-q"
  80.     ) else (
  81.         set "dodo_DupeMergeQuiet="
  82.     )
  83. )
  84.  
  85.  
  86. rem Checking Exclude Drive Filter and Adding "Name" to that list
  87. rem wmic returns with a table title "Name" regardless of settings.
  88. if defined dodo_ExcludedDriveLetters (
  89.     set "dodo_ExcludedDriveLetters=Name !dodo_ExcludedDriveLetters!"
  90. ) else (
  91.     set "dodo_ExcludedDriveLetters=Name"
  92. )
  93. :::::::::::::::::::::::::::::::::::::::
  94.  
  95.  
  96.    
  97. :::::::::::::::::::::::::::::::::::::::
  98. ::: Brians, give me your Brians... ::::
  99. :: (yes, Brians. Dam you SPEL Police) :
  100. ::
  101. echo/&echo/&echo/
  102. echo/_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  103. echo/_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_
  104. for /f "delims=:" %%a in ('wmic logicaldisk get name ^| findstr /i "[A-Z]" ^| findstr /i /v "!dodo_ExcludedDriveLetters!"') do (
  105.     echo/
  106.     echo/  Info: Processing %%~a:\
  107.     echo/  cmd: call "!dodo_DupeMergeBin!" !dodo_DupeMergeOutLog! !dodo_DupeMergeQuiet! %%~a:\ !dodo_DupeMergeExclude!
  108.     echo/ -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
  109.     call "!dodo_DupeMergeBin!" !dodo_DupeMergeOutLog! !dodo_DupeMergeQuiet! %%~a:\ !dodo_DupeMergeExclude!
  110.     echo/ -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
  111. )
  112. echo/_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  113. echo/_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_
  114. echo/
  115.  
  116. :::::::::::::::::::::::::::::::::::::::
  117.  
  118. :GimmeOuttaHere
  119. rem unset all vars
  120. (for /f "tokens=1 delims==" %%a in ('set dodo_') do set "%%a=") 2>nul 1>nul
Comments
  • User was banned
Add Comment
Please, Sign In to add comment