|
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
|