lauder
Goto Top

robocopy Idee für .log Datei öffnen-Befehl und .log Datei erstellen mit Fehler Protokol im Temp Ordner

Hallo

Ich möchte den Ordner Favoriten 1:1 kopieren (Vergleichen der Ordner + Dateien und löschen überschüssige Dateien).
Es soll nach dem kopieren eine log Datei [U]öffnen[/U] (die im TEMP Ordner erstellt wurde) mit einer Protokolierung aller Fehler (welche Dateien gelöscht wurden und welche kopiert und nicht kopiert wurden).
Das Eingabefenster sollte aber noch offen sein und auch dort sollte quasi die Ordner die gelöscht, kopiert und nicht kopiert wurden anzeigen.

Was muss ich an meinem Skript anpassen?

*
@echo OFF
CLS
color 0A
ECHO Die Datensicherung der Favoriten Datei wird gestartet ..
ECHO.

@set logf=C:\WINDOWS\Temp\Backup.txt
:start
echo * öffne Logfile *
@echo S T A R T > %logf%
@echo. >> %logf%

robocopy.exe "D:\INSTALLATION PROGRAMME\Backup\Favoriten" "G:\INSTALLATION PROGRAMME\Backup\Favoriten" *.* /s /v /mir /x /r:1 /w:1 /TEE /X /V

if errorlevel 16 echo
*FATAL ERROR* & goto end
if errorlevel 15 echo FAIL MISM XTRA COPY & goto end
if errorlevel 14 echo FAIL MISM XTRA & goto end
if errorlevel 13 echo FAIL MISM COPY & goto end
if errorlevel 12 echo FAIL MISM & goto end
if errorlevel 11 echo FAIL XTRA COPY & goto end
if errorlevel 10 echo FAIL XTRA & goto end
if errorlevel 9 echo FAIL COPY & goto end
if errorlevel 8 echo FAIL & goto end
if errorlevel 7 echo MISM XTRA COPY & goto end
if errorlevel 6 echo MISM XTRA & goto end
if errorlevel 5 echo MISM COPY & goto end
if errorlevel 4 echo MISM & goto end
if errorlevel 3 echo XTRA COPY & goto end
if errorlevel 2 echo XTRA & goto end
if errorlevel 1 echo COPY & goto end
if errorlevel 0 echo --no change-- & goto end
if not ERRORLEVEL 1 goto log
if not ERRORLEVEL 2 goto log
if not ERRORLEVEL 3 goto log
if not ERRORLEVEL 4 goto log
if not ERRORLEVEL 5 goto log
if not ERRORLEVEL 6 goto log
if not ERRORLEVEL 7 goto log
if not ERRORLEVEL 8 goto log
if not ERRORLEVEL 9 goto log
if not ERRORLEVEL 10 goto log
if not ERRORLEVEL 11 goto log
if not ERRORLEVEL 12 goto log
if not ERRORLEVEL 13 goto log
if not ERRORLEVEL 14 goto log
if not ERRORLEVEL 15 goto log
if not ERRORLEVEL 16 goto log
if not ERRORLEVEL 1 goto send
if not ERRORLEVEL 2 goto send
if not ERRORLEVEL 3 goto send
if not ERRORLEVEL 4 goto send
if not ERRORLEVEL 5 goto send
if not ERRORLEVEL 6 goto send
if not ERRORLEVEL 7 goto send
if not ERRORLEVEL 8 goto send
if not ERRORLEVEL 9 goto send
if not ERRORLEVEL 10 goto send
if not ERRORLEVEL 11 goto send
if not ERRORLEVEL 12 goto send
if not ERRORLEVEL 13 goto send
if not ERRORLEVEL 14 goto send
if not ERRORLEVEL 15 goto send
if not ERRORLEVEL 16 goto send
:end
echo.

echo Errorlevel: %errorlevel% >> %logf%
@echo. >> %logf%

pause
*

Danke im voraus für die Hilfe

Elena

Content-Key: 30148

Url: https://administrator.de/contentid/30148

Printed on: April 19, 2024 at 17:04 o'clock

Member: yumper
yumper Apr 10, 2006 at 23:28:13 (UTC)
Goto Top
ich denke

robocopy <quelle> <Ziel> /MIR > <logfile>

reicht völlig

bedenke !!
es gibt nur eine Ausgabe
entweder in dein Fenster
oder die Logdatei

am Ende kannst dir ja mit

TYPE <logfile>


das Ergebnis ansehen
Member: Biber
Biber Apr 11, 2006 at 18:52:02 (UTC)
Goto Top
Hm, Lauder,
nicht dass ich es ausprobiert hätte, aber aus dem Bauch heraus:

(Dein Bätchlett bis zur Zeile vor "Robocoby .." as is)

Robocopy [Quelle] [Ziel] [streiche:"*.*"] [bisherige Optionen] /Log+:%log%

... die abwärts zählenden "if errorlevel 16" ... bis ..."if errorlevel 0 ..." würde ich eindeutiger formulieren:

if errorlevel 16 (echo *FATAL ERROR*) && goto end
..
..Alles NACH "if errorlevel 0" bis ":end" wird NIE erreicht -- in die Tonne damit .

Da weiß ich nicht genau, was Du da vorhast... jedenfalls hast Du die ECHO-Meldungen NUR auf dem Bildschirm, nicht in der Logdatei.

Du könntest das Ganze etwas nachvollziehbarer gestalten, wenn Du am Anfang die Errorlevel-Texte in Variablen packst:
Set "Errorlevel_16= FATAL ERROR"
...
Set "Errorlevel_5= Mismatch beim COPY"
...
Set "Errorlevel_0=Alles prima!"

und später einfach statt ALT dann NEU schreibst:

ALT:
echo Errorlevel: %errorlevel% >> %logf%

NEU:
Set "myErrorlevel=Errorlevel_%errorlevel%"
echo Errorlevel: %myerrorlevel% >> %logf%

Den Rattenschwanz oben kannst Du dann genauso handeln:
(unmittelbar nach Robocopy)
Set "myErrorlevel=Errorlevel_%errorlevel%"
(echo %myerrorlevel% ) && goto :end

..statt dieser 16 If errorlevel-Zeilen.

Hope That Helps

Biber
[Edit] Das nicht jugendfreie und automatisch entschärfte Wort oben ("Rattenschwanz") heißt Rattenschwantz mit "z" statt "tz".
[/Edit]
Member: Lauder
Lauder Apr 11, 2006 at 20:55:43 (UTC)
Goto Top
Danke an euch beiden es hat geholfen.

Tschüssi