Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- :: 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
- @echo off && setlocal EnableDelayedExpansion && (for /f "tokens=1 delims==" %%a in ('set dodo_') do set "%%a=") 2>nul 1>nul
- :::::::::::::::::::::::::::::::::::::::
- ::: User Settings :::::::::::::::::::::
- ::
- 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.
- set "dodo_DupeMergeExclude=%windir%" rem Default: %windir% --- This is the exclusion list for dupemerge, it shouldn't merge files on that list.
- 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
- set "dodo_DupeMergeQuiet=true" rem Default: true --- Tells dupemerge to be quiet. Suppressing any output. This variable acts like a boolean.
- 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
- :::::::::::::::::::::::::::::::::::::::
- :::::::::::::::::::::::::::::::::::::::
- ::: Pre-Processing and Error-Checking :
- ::
- rem Checking elevated console, print msg and continue
- call "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 2>nul 1>nul || (
- echo/
- echo/ Warning: Info: Running in console without admin privileges, not all files can be linked.
- echo/ Info: Continuing.
- timeout /t 5
- )
- rem Checking for binary and searching the path when needed
- rem when multiple binaries are located, scrpt will use the last one on the list.
- if not defined dodo_DupeMergeBin (
- echo/
- for /f "tokens=1* delims=" %%a in ('where dupemerge.exe') do (
- echo/ Info: Bin: Found binary %%a
- set "dodo_DupeMergeBin=%%a"
- )
- )
- rem When Binary var is still unset, print error and leave script
- if not defined dodo_DupeMergeBin (
- echo/
- echo/ Error: Fatal: dupemerge binary undefined, download and install it.
- echo/ Info: Direct Download link: http://www.schinagl.priv.at/nt/dupemerge/dupemerge.zip
- echo/ Info: Information Link: http://schinagl.priv.at/nt/dupemerge/dupemerge.html
- goto GimmeOuttaHere
- )
- rem Prepending -e param to the exclution param
- if defined dodo_DupeMergeExclude (
- set "dodo_DupeMergeExclude=-e !dodo_DupeMergeExclude!"
- )
- rem stripping out double quotes from log path -- will be (re-)added later
- if defined dodo_DupeMergeOutLog (
- set "dodo_DupeMergeOutLog=!dodo_DupeMergeOutLog:"=!"
- )
- rem Test to see if writable, unset variable when not, otherwise prepend the -o param.
- if defined dodo_DupeMergeOutLog (
- (echo/) >> "!dodo_DupeMergeOutLog!"
- if !errorlevel! equ 0 (
- set "dodo_DupeMergeOutLog=-o "!dodo_DupeMergeOutLog!""
- ) else (
- echo/
- echo/ Warning: Unable to to write to "!dodo_DupeMergeOutLog!"
- echo/ Info: LOG WILL NOT BE CREATED. Unsetting output log...
- echo/
- set "dodo_DupeMergeOutLog="
- )
- )
- rem quiet boolean check and set quiet param
- if defined dodo_DupeMergeQuiet (
- echo !dodo_DupeMergeQuiet:~0,1! | findstr /i "y 1 t" 2>nul 1> nul
- if !errorlevel! equ 0 (
- set "dodo_DupeMergeQuiet=-q"
- ) else (
- set "dodo_DupeMergeQuiet="
- )
- )
- rem Checking Exclude Drive Filter and Adding "Name" to that list
- rem wmic returns with a table title "Name" regardless of settings.
- if defined dodo_ExcludedDriveLetters (
- set "dodo_ExcludedDriveLetters=Name !dodo_ExcludedDriveLetters!"
- ) else (
- set "dodo_ExcludedDriveLetters=Name"
- )
- :::::::::::::::::::::::::::::::::::::::
- :::::::::::::::::::::::::::::::::::::::
- ::: Brians, give me your Brians... ::::
- :: (yes, Brians. Dam you SPEL Police) :
- ::
- echo/&echo/&echo/
- echo/_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
- echo/_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_
- for /f "delims=:" %%a in ('wmic logicaldisk get name ^| findstr /i "[A-Z]" ^| findstr /i /v "!dodo_ExcludedDriveLetters!"') do (
- echo/
- echo/ Info: Processing %%~a:\
- echo/ cmd: call "!dodo_DupeMergeBin!" !dodo_DupeMergeOutLog! !dodo_DupeMergeQuiet! %%~a:\ !dodo_DupeMergeExclude!
- echo/ -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
- call "!dodo_DupeMergeBin!" !dodo_DupeMergeOutLog! !dodo_DupeMergeQuiet! %%~a:\ !dodo_DupeMergeExclude!
- echo/ -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
- )
- echo/_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
- echo/_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_
- echo/
- :::::::::::::::::::::::::::::::::::::::
- :GimmeOuttaHere
- rem unset all vars
- (for /f "tokens=1 delims==" %%a in ('set dodo_') do set "%%a=") 2>nul 1>nul