:: 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
Comments
0 B
|👍
/👎