@echo off set "LW=" if not exist c:\SKSoft md c:\SKSoft && md c:\SKSoft\log
REM Wochentag definieren set DOW= for /f %%g in ('wmic path win32_localtime get dayofweek^|findstr /v /r "^$"') do (set DOW=%%g) If %dow% equ 1 set "WoTa=Montag" If %dow% equ 2 set "WoTa=Dienstag" If %dow% equ 3 set "WoTa=Mittwoch" If %dow% equ 4 set "WoTa=Donnerstag" If %dow% equ 5 set "WoTa=Freitag" If %dow% equ 6 set "WoTa=Samstag" If %dow% equ 7 set "WoTa=Sonntag"
:MONDEF
REM MONAT DEFINIEREN
set MONTH=%date:~-7,2% If %MONTH% equ 1 set "MONAT=Jan" If %MONTH% equ 2 set "MONAT=Feb" If %MONTH% equ 3 set "MONAT=Mrz" If %MONTH% equ 4 set "MONAT=Aprl" If %MONTH% equ 5 set "MONAT=Mai" If %MONTH% equ 6 set "MONAT=Jun" If %MONTH% equ 7 set "MONAT=Jul" If %MONTH% equ 8 set "MONAT=Aug" If %MONTH% equ 9 set "MONAT=Sep" If %MONTH% equ 10 set "MONAT=Okt" If %MONTH% equ 11 set "MONAT=Nov" If %MONTH% equ 12 set "MONAT=Dez"
REM Den letzten Freitag definieren: @echo off&setlocal set /a dd=100%date:~-10,2%%%100,mm=100%date:~-7,2%%%100,åå=%date:~-4% set /a z=14-mm,z/=12,y=åå+4800-z,m=mm+12*z-3,dow=153*m+2 set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1
REM 5 steht für Freitag, 0 für Montag, 7 für Sonntag if not %dow% equ 5 goto :QBEGIN
set /a "Februar = 22 + ( åå / 4- ( åå - 1 ) / 4 - ( åå / 100 - ( åå - 1 ) / 100) + ( åå / 400 - ( åå - 1 ) / 400 ) )" set "OK=" if %mm% equ 2 if %dd% geq %Februar% set "OK=1" && goto :QBEGIN for %%i in (1 3 5 7 8 10 12) do if %%i equ %mm% if %dd% geq 25 set "OK=1" for %%i in (2 4 6 9 11) do if %%i equ %mm% if %dd% geq 24 set "OK=1" if not defined OK goto :QBEGIN
:QBEGIN del %userprofile%\99laufs99.txt > NUL 2> NUL del %userprofile%\99lauf99.txt > NUL 2> NUL del %userprofile%\99drive99.txt > NUL 2> NUL del %userprofile%\99drives99.txt > NUL 2> NUL CLS IF defined OK goto :MONTXT @echo Mit der %WoTa% 's Sicherung kann begonnen werden. @echo Abhaengig von der Menge der Sicherungsdaten kann es eine Weile dauern. @echo Die Datensicherung kann mit den Tasten "Strg" + "C" abgebrochen werden... goto DIENST
:MONTXT @echo Es sollte der letzte Freitag im Monat sein. Bitte stecken Sie @echo den USB Stick fuer die Monatssicherung ein. @echo Die Sicherung fuer den Monat %MONAT% kann begonnen werden. @echo Die Datensicherung kann mit den Tasten "Strg" + "C" abgebrochen werden...
:DIENST pause REM Dienst überprüfen cls @echo off qprocess * | find /I "wkflsr32.exe" >NUL IF NOT ERRORLEVEL 1 GOTO QSTART qprocess * | find /I "wkfbu32.exe" >NUL IF NOT ERRORLEVEL 1 GOTO QSTART goto :Qexit
:QSTART @echo Das Programm laeuft leider noch. Bitte beenden Sie das Programm @echo sonst kann mit der Datensicherung nicht begonnen werden ... @echo Die Datensicherung kann mit den Tasten "Strg" + "C" abgebrochen werden... pause goto QBEGIN
:Qexit
REM USB Laufwerke auslesen
@echo off cls type NUL >%userprofile%\99laufs99.txt type NUL >%userprofile%\99drives99.txt for /L %%a in (9,-1,0) do wmic logicaldisk where drivetype=2 get name,size | find "%%a" >>%userprofile%\99drives99.txt type %userprofile%\99drives99.txt >%userprofile%\99drive99.txt FOR /F "tokens=1" %%a in (%userprofile%\99drive99.txt) do ( FINDSTR "%%a" %userprofile%\99laufs99.txt >NUL || echo %%a >>%userprofile%\99laufs99.txt ) type %userprofile%\99laufs99.txt > %userprofile%\99lauf99.txt REM USB Laufwerke zählen Set /A Counter=0 FOR /F %%A IN (%userprofile%\99lauf99.txt) DO SET /A Counter+=1 IF %Counter% == 0 goto KeinUSB IF NOT %Counter% == 1 goto counter goto copy
:KeinUSB @echo Es sind keine USB Sticks fuer die Datensicherung eingesteckt. @echo Bitte stecken Sie den USB Stick fuer die Datensicherung ein! pause goto QBEGIN
:counter cls @echo Es sind mehr als 1 USB Stick oder andere Speicherkarten eingesteckt. @echo Bitte entfernen Sie alle USB Stick's oder Speicherkarten aus dem @echo Kartenlesegeraet (sofern vorhanden) und stecken Sie nur den USB @echo Stick fuer die Datensicherung ein. pause goto QBEGIN
pause
:copy FOR /F "eol=: tokens=1 delims= " %%i in (%userprofile%\99lauf99.txt) do ( set "LW=%%i" ) IF defined OK goto :MONATSIK IF NOT EXIST "%LW%\%WoTa%\" goto full
REMKopiere definierte Ziele auf den USB Stick for %%k in (C:\CG\CMS) do xcopy "%%k" "%LW%\%WoTa%\" /S /E /C /H /R /Y /D /V if errorlevel 0 @echo %WoTa% %date% - Die Tagessicherung %WoTa% wurde erfolgreich durchgefuehrt um %time% - >>"c:\SKSoft\log\log.txt" && @echo %WoTa% %date% - Die Tagessicherung %WoTa% wurde erfolgreich durchgefuehrt um %time% - >>"%LW%\log.txt" @echo Nur die veraenderten Daten wurden auf dem Laufwerk %LW% im Verzeichnis %WoTa% @echo gesichert. goto ende
:full for %%k in (C:\CG\CMS) do xcopy "%%k" "%LW%\%WoTa%\" /S /Y if errorlevel 0 @echo %WoTa% %date% - Die Komplettsicherung %WoTa% wurde erfolgreich durchgefuehrt um %time% - >>"c:\SKSoft\log\log.txt" && @echo %WoTa% %date% - Die Komplettsicherung %WoTa% wurde erfolgreich durchgefuehrt um %time% - >>"%LW%\log.txt" @echo Es wurde eine Komplettsicherung auf dem Laufwerk %LW% im Ordner %WoTa% @echo durchgefuehrt. goto ende
:MONATSIK for /f "tokens=1,2,3 delims=. " %%a in ('date /t') do set JAHR=%%c for %%u in (C:\CG\CMS) do xcopy "%%u" "%LW%\%JAHR%\%MONAT%\" /S /Y if errorlevel 0 @echo %MONAT% %date% - Die Komplettsicherung für Monat %MONAT% wurde erfolgreich durchgefuehrt um %time% - >>"c:\SKSoft\log\log.txt" && @echo %MONAT% %date% - Die Komplettsicherung für Monat %MONAT% wurde erfolgreich durchgefuehrt um %time% - >>"%LW%\log.txt" @echo Es wurde eine Komplettsicherung auf dem Laufwerk %LW% im Ordner %LW%\%JAHR%\%MONAT%\ @echo durchgefuehrt.
:ende
pause
|