maddog1982
Goto Top

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
Ungltige 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?

Content-Key: 86143

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

Printed on: April 24, 2024 at 12:04 o'clock

Member: bastla
bastla Apr 22, 2008 at 18:49:08 (UTC)
Goto Top
Hallo Maddog1982!

Du könntest einfach den Errorlevel des "xcopy"-Befehles nutzen und eine entsprechende Meldung in eine Fehler-Log-Datei schreiben:
for /f %%i in (clients.txt) do xcopy \\%computername%\Programm\test \\%%i\Programm\test||(echo Fehler bei %%i)>>D:\LogFehler.txt

Grüße
bastla
Member: Maddog1982
Maddog1982 Apr 22, 2008 at 19:13:13 (UTC)
Goto Top
Danke, hat auf anhieb funktioniert

Kannst du mir das erklären?
Member: bastla
bastla Apr 22, 2008 at 19:31:00 (UTC)
Goto Top
Hallo Maddog1982!

http://technet2.microsoft.com/WindowsServer/de/library/44500063-fdaf-4e ... (unter "Verwenden mehrerer Befehle und Symbole zur bedingten Verarbeitung")

Grüße
bastla
Member: Maddog1982
Maddog1982 Apr 22, 2008 at 19:53:14 (UTC)
Goto Top
jetzt benötige ich nur noch die Auskunft wie ich den aktuellen Errorlevel bekomme.
Wenn ich folgendes mache


bekomme ich immer Errorlevel 0 angezeigt, wieso?
Member: Biber
Biber Apr 22, 2008 at 20:48:34 (UTC)
Goto Top
Moin Maddog1982,

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
Member: Maddog1982
Maddog1982 Apr 23, 2008 at 20:14:15 (UTC)
Goto Top
Vielen Dank ihr habt mir super geholfen, Task kann als erledigt gekennzeichnet werden