Batch nur Clients aus einer Logdatei auswerten bei denen Fehler beim kopieren aufgetreten sind
Ich habe folgendes anliegen,
ich kopiere per Xcopy Befefehl in einer Batch Datei verschiedene Daten zu den Windows Clients im Netzwerk.
in der Datei clients.txt stehen alle Clients unseres Netzwerkes
@echo on
for /f %%i in (clients.txt) do xcopy \\%computername%\Programm\test \\%%i\Programm\test
Zusätzlich log ich den kompl. Befehl mit, Log sieht wie folgt aus
D:\test>xcopy \\SRV-TEST-DO\Program\test \\CLIENT1\Programm\test
Ungltige Laufwerkangabe
0 Datei(en) kopiert
D:\test>xcopy \\SRV-TEST-DO\Program\test \\CLIENT2\Programm\test
186 Datei(en) kopiert
Jetzt kommt mein Problem, da das Log bei 50 Clients ziemlich unübersichtlich wird möchte ich ein zusätzliches Log in der eine Zusammenfassung steht nur von den Clients wo ein Fehler beim kopieren aufgetreten ist.
Wie bekomme ich das hin?
ich kopiere per Xcopy Befefehl in einer Batch Datei verschiedene Daten zu den Windows Clients im Netzwerk.
in der Datei clients.txt stehen alle Clients unseres Netzwerkes
@echo on
for /f %%i in (clients.txt) do xcopy \\%computername%\Programm\test \\%%i\Programm\test
Zusätzlich log ich den kompl. Befehl mit, Log sieht wie folgt aus
D:\test>xcopy \\SRV-TEST-DO\Program\test \\CLIENT1\Programm\test
Ungltige Laufwerkangabe
0 Datei(en) kopiert
D:\test>xcopy \\SRV-TEST-DO\Program\test \\CLIENT2\Programm\test
186 Datei(en) kopiert
Jetzt kommt mein Problem, da das Log bei 50 Clients ziemlich unübersichtlich wird möchte ich ein zusätzliches Log in der eine Zusammenfassung steht nur von den Clients wo ein Fehler beim kopieren aufgetreten ist.
Wie bekomme ich das hin?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 86143
Url: https://administrator.de/contentid/86143
Ausgedruckt am: 20.11.2024 um 11:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Maddog1982!
http://technet2.microsoft.com/WindowsServer/de/library/44500063-fdaf-4e ... (unter "Verwenden mehrerer Befehle und Symbole zur bedingten Verarbeitung")
Grüße
bastla
http://technet2.microsoft.com/WindowsServer/de/library/44500063-fdaf-4e ... (unter "Verwenden mehrerer Befehle und Symbole zur bedingten Verarbeitung")
Grüße
bastla
Moin Maddog1982,
Deshalb hat %errorlevel% immer den Wert, den es auch "beim Lesen" der ersten Befehlsworte dieser Zeile hat.
Also bevor irgendeine Schleife überhaupt losläuft.
Abhilfe. Variable "verzögert", erst beim Ausführen auflösen - neudeutsch "DelayedExpansion".
Die "verzögert" aufzulösende Variable wird in Ausrufezeichen gesetzt (!errorlevel!) statt wie sonst in Prozentzeichen (%errorlevel%).
Grüße
Biber
bekomme ich immer Errorlevel 0 angezeigt, wieso?
Weil alle Variablen, die (aus Sicht der CMD.exe) in einer Zeile/einer einzigen Anweisung stehen sozusagen "beim Lesen" einmalig aufgelöst werden.Deshalb hat %errorlevel% immer den Wert, den es auch "beim Lesen" der ersten Befehlsworte dieser Zeile hat.
Also bevor irgendeine Schleife überhaupt losläuft.
Abhilfe. Variable "verzögert", erst beim Ausführen auflösen - neudeutsch "DelayedExpansion".
Setlocal EnableDelayedExpansion
for /f %%i in (clients.txt) do xcopy \\%computername%\Programm\test \\%%i\Programm\test||(echo Fehler bei %%i wegen !errorlevel!)>>D:\LogFehler.txt
Die "verzögert" aufzulösende Variable wird in Ausrufezeichen gesetzt (!errorlevel!) statt wie sonst in Prozentzeichen (%errorlevel%).
Grüße
Biber