43497
14.02.2007, aktualisiert am 18.10.2012
22311
20
0
Robocopy Logfile auswerten
Hallo zusammen! Bin recht neu hier und hoffe, dass ihr mir helfen könnt.
Es geht um Robocopy. Dies kopiert Daten von einer NAS-Station auf eine mobile NAS-Einheit und erstellt dann ein Logfile auf der mobilen Einheit.
Ich denke dass einige hier wissen wie das Logfile von Robocopy aussieht, für den unerfahrenen Anweder nicht gerade Benutzerfreundlich...
Nun habe ich in die Robocopy-Batchdatei Zeilen eingefügt, dass auf dem Desktop eine Kurzform des Logfiles erstellt wird.
Gäbe es die Möglichkeit das original Logfile danach zu durchsuchen (vorallem nur die letzten X Zeilen, da das Logbuch angehängt und nicht überschrieben wird), dass bei FAILED 0 steht ?? Dadurch dass es so tabellenförmig angeordnet ist komme ich leider nicht weiter...
Wenn FAILED = 0, ist es dann möglich ein Popup zu erstellen mit z.B. dem Text "Kopiervorgang erfolgreich" bzw. wenn FAILED >=1 "Kopiervorgang nicht erfolgreich" ??
Danke schonmal für die Hilfe!
Mit freundlichen Grüßen
Dominik Fischer
Es geht um Robocopy. Dies kopiert Daten von einer NAS-Station auf eine mobile NAS-Einheit und erstellt dann ein Logfile auf der mobilen Einheit.
Ich denke dass einige hier wissen wie das Logfile von Robocopy aussieht, für den unerfahrenen Anweder nicht gerade Benutzerfreundlich...
Nun habe ich in die Robocopy-Batchdatei Zeilen eingefügt, dass auf dem Desktop eine Kurzform des Logfiles erstellt wird.
Gäbe es die Möglichkeit das original Logfile danach zu durchsuchen (vorallem nur die letzten X Zeilen, da das Logbuch angehängt und nicht überschrieben wird), dass bei FAILED 0 steht ?? Dadurch dass es so tabellenförmig angeordnet ist komme ich leider nicht weiter...
Wenn FAILED = 0, ist es dann möglich ein Popup zu erstellen mit z.B. dem Text "Kopiervorgang erfolgreich" bzw. wenn FAILED >=1 "Kopiervorgang nicht erfolgreich" ??
Danke schonmal für die Hilfe!
Mit freundlichen Grüßen
Dominik Fischer
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 51629
Url: https://administrator.de/contentid/51629
Ausgedruckt am: 26.11.2024 um 12:11 Uhr
20 Kommentare
Neuester Kommentar
Hallo DFischer und willkommen im Forum!
Das Thema hatten wir vor einiger Zeit (siehe hier) - vielleicht hilft Dir das ...
Grüße
bastla
Das Thema hatten wir vor einiger Zeit (siehe hier) - vielleicht hilft Dir das ...
Grüße
bastla
Hallo DFischer!
Verwendest Du die Option "/LOG+:"? Als Workaround könntest Du mit "/LOG:" jeweils ein neues Log erstellen und bei Bedarf mit "type NeuesLog.txt>>AltesLog.txt" anfügen lassen - überprüfen müsstest Du dann immer nur das neue Log.
Um das Durchlesen aller Zeilen des (neuen) Logs kommst Du aber nicht herum, da ja die Zusammenfassungszeilen durch einen "Mustervergleich" gefunden werden müssen.
Du könntest Dich aber auf die Suche nach einem Pendant zum Unix-Tool "tail" machen, um nur die letzten x Zeilen eines Files zu erhalten und so den Ablauf beschleunigen zu können.
Grüße
bastla
Verwendest Du die Option "/LOG+:"? Als Workaround könntest Du mit "/LOG:" jeweils ein neues Log erstellen und bei Bedarf mit "type NeuesLog.txt>>AltesLog.txt" anfügen lassen - überprüfen müsstest Du dann immer nur das neue Log.
Um das Durchlesen aller Zeilen des (neuen) Logs kommst Du aber nicht herum, da ja die Zusammenfassungszeilen durch einen "Mustervergleich" gefunden werden müssen.
Du könntest Dich aber auf die Suche nach einem Pendant zum Unix-Tool "tail" machen, um nur die letzten x Zeilen eines Files zu erhalten und so den Ablauf beschleunigen zu können.
Grüße
bastla
Hallo DFischer!
Wie schon an anderer Stelle angemerkt, wäre die Aufgabenstellung ohnehin besser per Batch zu lösen - das könnte dann so aussehen:
Falls Du auch die "Dirs :"-Zeile mit überprüfen wolltest, könntest Du eine Datei "SuchStrings.txt" mit folgendem Inhalt erstellen:
und die "for"-Zeile entsprechend abändern:
Grüße
bastla
Wie schon an anderer Stelle angemerkt, wäre die Aufgabenstellung ohnehin besser per Batch zu lösen - das könnte dann so aussehen:
@echo off & setlocal
set /a Failed=0
for /f "tokens=7" %%i in ('findstr /C:"Files :" RoboLog.txt') do set /a Failed+=%%i
If %Failed%==0 goto :eof
echo %Failed% Fehler gefunden!
Dirs :
Files :
for /f "tokens=7" %%i in ('findstr /G:SuchStrings.txt RoboLog.txt') do set /a Failed+=%%i
Grüße
bastla
Hallo DFischer!
und achte auf die Anzahl an Leerstellen - auch nach dem Doppelpunkt müssen es mindestens 2 sein, um die Zeile exakt zu kennzeichnen.
Darf ich trotzdem nochmal dezent auf die Batch-Variante hinweisen?
Grüße
bastla
... auf die Zeile "Dirs" überprüft wird?
Ja. Ändere die entsprechende Zeile aufConst sMarker = " Files : "
Darf ich trotzdem nochmal dezent auf die Batch-Variante hinweisen?
Grüße
bastla
Im übrigen wird eine Batch-Datei im Anhang an einen Backup-Job ausgeführt, doch leider versteckt. Der PC piept zwar wenn das VBS-Message Fenster erscheint, doch man sieht nichts. Gibt es eine Möglichkeit das ganze in den Vordergrund zu schieben?
Wie wurde denn die Ausführung "versteckt"?Ganz nebenbei sei erwähnt, dass durch einen Aufruf per
CScript //nologo CheckRobocopyLog.vbs
Grüße
bastla
Hallo DFischer!
Grüße
bastla
"Dirs-Daten nicht gefunden"
Sollte besser (allgemeiner) formuliert sein und bedeutet: "Passende Datenzeile lt Vorgabe in sMarker nicht gefunden." - daher vielleicht nochmals den Anfang der "Files :"-Zeile kopieren und bei "sMarker=" zwischen die Anführungszeichen stellen (Leerzeichen am Ende nicht vergessen) - oder, vielleicht noch besser, poste einmal die relevanten Zeilen Deines Beispiellogs.Komme mit deiner Batch-Variante nicht ganz klar.
Wenn der Batch ohne Fehlermeldung durchläuft, sollte das eigentlich bedeuten, dass in der Spalte "Failed" der Zeile "Files :" der Wert 0 steht. Ändere den entsprechenden Eintrag in der Log-Datei, und es müsste die Fehleranzahl gemeldet werden. Auch hier wäre eine mögliche (weitere) Vorgangsweise das Versenden einer Mail (Stichwort "blat").Grüße
bastla
Hallo DFischer!
Da das Programm die Anzahl unter "Failed" überprüft, und diese in beiden Fällen 0 ist, wird kein Fehler festgestellt - der Batch geht genauso vor. Wie sollte denn für Dich die Überprüfung aussehen?
Leicht veränderteter Batch, um auch ein "OK" anzuzeigen (aber immer noch auf Basis "Failed"=0):
Grüße
bastla
Total/Copied/Skipped/Mismatch/Failed/Extras
Dirs: 1 0 1 0 0 0
Files: 3 0 3 0 0 2
Dirs: 1 0 1 0 0 0
Files: 3 0 3 0 0 2
Da das Programm die Anzahl unter "Failed" überprüft, und diese in beiden Fällen 0 ist, wird kein Fehler festgestellt - der Batch geht genauso vor. Wie sollte denn für Dich die Überprüfung aussehen?
Leicht veränderteter Batch, um auch ein "OK" anzuzeigen (aber immer noch auf Basis "Failed"=0):
@echo off & setlocal
set /a Failed=0
for /f "tokens=7" %%i in ('findstr /C:"Files :" RoboLog.txt') do set /a Failed+=%%i
If %Failed%==0 goto :OK
echo %Failed% Fehler gefunden!
goto :eof
:OK
echo Sicherung OK (unter "Failed" wurden 0 Dateien vermerkt).
goto :eof
Grüße
bastla
Hallo DFischer!
Na dann:
Grüße
bastla
Na dann:
@echo off & setlocal
set /a Copied=0
for /f "tokens=4" %%i in ('findstr /C:"Files :" RoboLog.txt') do set /a Copied+=%%i
If %Copied%==0 goto :Fehler
echo %Copied% Dateien kopiert.
goto :eof
:Fehler
echo Fehler! Es wurden keine Dateien kopiert. Bitte Log überprüfen!
goto :eof
Grüße
bastla
Hallo DFischer!
Um mehr zu sehen, kannst Du "@echo off & " entfernen und nur "setlocal" belassen und vor jedes "goto :eof" ein "pause" setzen - Popup gibt's zwar dann auch nicht, aber die Meldung kannst Du auch lesen, wenn Du die Batchdatei zB per Doppelklick gestartet hast.
BTW: Die erste Zeile ist Luxus, wenn Du die Umleitung in der zweiten Zeile nur mit einem ">" schreibst - damit wird die ev existierende "Logstatus.txt" durch den neuen Eintrag überschrieben.
Die Meldungen der Batchdatei kannst Du dann (wenn es denn so klappt, wie Du es Dir vorstellst) natürlich auch in die "Logstatus.txt" schicken.
Eigentlich sehe ich bei dem Ganzen derzeit nichts unangenehm Auffallendes - sollte jetzt eigentlich funktionieren.
Grüße
bastla
Um mehr zu sehen, kannst Du "@echo off & " entfernen und nur "setlocal" belassen und vor jedes "goto :eof" ein "pause" setzen - Popup gibt's zwar dann auch nicht, aber die Meldung kannst Du auch lesen, wenn Du die Batchdatei zB per Doppelklick gestartet hast.
BTW: Die erste Zeile ist Luxus, wenn Du die Umleitung in der zweiten Zeile nur mit einem ">" schreibst - damit wird die ev existierende "Logstatus.txt" durch den neuen Eintrag überschrieben.
Die Meldungen der Batchdatei kannst Du dann (wenn es denn so klappt, wie Du es Dir vorstellst) natürlich auch in die "Logstatus.txt" schicken.
Eigentlich sehe ich bei dem Ganzen derzeit nichts unangenehm Auffallendes - sollte jetzt eigentlich funktionieren.
Grüße
bastla