Datensicherung
Sonntag, den 07. Februar 2010 um 18:54 Uhr
Meine aktuelle Datensicherungs-Batch, die zusammen mit robocopy (was mir genügt) die eingestellten Verzeichnisse kopiert.
Dabei ist der Laufwerksbuchstabe egal. Die Quelle und das Ziel werden per Laufwerksbezeichnung gefunden UND diese darf Leerzeichen enthalten.
EDIT: Nee, eigentlich nicht. Ich weiß auch nicht mehr welcher bad-ass Trick das konnte.

Diese wird ständig verbessert und weiterentwickelt. Die Vorschau ist momentan z.B. noch nicht so übersichtlich.


Der Autor leistet keine Gewähr auf Eignung für jegliche Verwendung, und keine Haftung für Datenverluste.

@echo off & setlocal 

set folders=

REM Ab hier editieren
REM --------------------------------------------

REM Laufwerksbezeichnung der Quelle
set srclabel=Interne Platte

call :add "\aa"
call :add "\bb"
call :add "\cc"
call :add "\dd"
call :add "\Programme noinst"
call :add "\Projects"

call :add "\Users\Name\Desktop"
call :add "\Users\Name\AppData\Roaming\Thunderbird"
call :add "\Users\Name\AppData\Roaming\Rainlendar"
call :add "\Users\Name\AppData\Roaming\Mozilla"

REM Ziellaufwerks Bezeichnung
set destlabel=Externe A

REM eg: "_backup"
REM Ein Anhängsel an die Ordnernamen. Kann man sich eig sparen.
set destsuffix=""

REM eg: "\backup folder"
set destprefix="\Notebook Live Backup"


REM Änderungen ab hier nur für Profis.
REM --------------------------------------------

set mydrive=%~d0%

set mylabel=
for /f "tokens=6 delims= " %%j in ('VOL %mydrive%') do (set mylabel=%%j)

call :voldetect "%srclabel%"
if "%drive%"=="" echo Error: "%srclabel%" not found! & pause & goto :eof
set srcdrive=%drive%

echo %drive%

call :voldetect "%destlabel%"
if "%drive%"=="" echo Error: "%destlabel%" not found! & pause & goto :eof
set destdrive=%drive%

echo.
echo.
echo ============= Backup (Mirror) =============
echo ~~~~~~~~~~~~~ ~~~~~~~~~~~~~
echo.
for %%p in (%folders%) do (
call :preview "%srclabel%" "%srcdrive%%%~p" "%destlabel%" "%destdrive%%destprefix:"=%%%~p%destsuffix:"=%" "%destdrive%%destprefix:"=%"
)

if "%error%"=="1" (
echo.
echo Es sind Fehler aufgetreten. Beliebige Taste zum Beenden.
pause > nul
goto :eof
)

echo Alles klar? Dann beliebige Taste zum Starten...
pause > nul

for %%p in (%folders%) do (
call :backup "%srclabel%" "%srcdrive%%%~p" "%destlabel%" "%destdrive%%destprefix:"=%%%~p%destsuffix:"=%"
)


goto :eof


REM -----------------------------------------------
REM -----------------------------------------------
REM -----------------------------------------------

:voldetect
set label=%~1
set drive=

REM ------ VOL DETECT ------
set suche=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

for %%a in (%suche%) do echo checking %%a ... & for /f "tokens=6 delims= " %%i in ('VOL %%a:') do (
if "%%i"=="%label%" set drive=%%a:
)
cls
REM ------ VOL DETECT ------
goto :eof



:preview
set srclabel=%~1
set src=%~2
set destlabel=%~3
set dest=%~4
set check=%~5

echo ² Quelle: %srclabel%
echo ² %src%
echo ²
echo ² Ziel: %destlabel%
echo ² %dest%
if NOT exist "%src%" echo. & echo ² FEHLER: %src% existiert nicht! & set error=1
if NOT exist "%check%" echo. & echo ² FEHLER: %check% existiert nicht! & set error=1
echo ------------------------------------------------------------------------
goto :eof


:backup
set srclabel=%~1
set src=%~2
set destlabel=%~3
set dest=%~4

REM do MIRROR
call robocopy "%src%" "%dest%" /MIR /ETA

REM do COPY
REM call robocopy "%src%" "%dest%" /COPY:DAT

goto :eof

:add
set tmp=%1
set folders=%folders% %tmp%
goto :eof