duckknight
Goto Top

Ausgabe aus CMD in Variable bei Batch

Hallo ich bin leider noch Anfänger in der Batch "Programmierung" versuche aber mein Anliegen deutlich zu machen.
Ich starte in einer Batch als Comandline einen Reboot (Drucker), dann überprüfe ich mit |find /i "error" auf den Fehler und mache eine Ausgabe in eine LOG Datei.
Das funktioniert so auch wunderbar mit ERRORLEVEL.
Nun kann es sich aber um verschiedene Fehler handeln (alle haben ERROR in der Zeile) und diese würde ich gerne in den Ausgabetext mit aufnehmen.
In eine weitere Datei schreiben, die sich ERROR.LOG nennt klappt auch, aber ich würde es gerne in einer Datei haben und das dann auch mit der Beschreibung.

Hier meine Zeilen:
:Start
echo %DATE% - %TIME% ######## >> rebootlog.txt
for /f %%I in (reboot.txt) do (
MFP-REBOOT.exe -ip=%%I -pw=initpassword -ssl=true -endapp=true | find /i "ERROR" >> ERROR.LOG  
if errorlevel 1 echo System %%I wurde erfolgreich gestartet >> rebootlog.txt
if not errorlevel 1 echo beim Reboot %%I ist ein Fehler aufgetreten  >> rebootlog.txt
)

mein Plan wäre die Zeile, die ich in >> ERROR.LOG schreibe in eine Variable wie %ERR% zu schreiben und diese dann hier auszugeben:
if not errorlevel 1 echo beim Reboot %%I ist ein Fehler aufgetreten: %ERR% >> rebootlog.txt

Bei 4 provozierten Fehlern habe ich in der ERROR.LOG z.B. folgende Zeilen:
//LoginError on MFP 192.168.14.100. ErrorCode = -4. ErrorMessage from Interface = 12.18.2020 21:52:40	192.168.14.100	Authentication Error.
Can't Ping MFP 192.168.14.120. ErrorMessage from Interface = 12.18.2020 21:52:53	192.168.14.120	Connection Error.
Can't Ping MFP AlexTest. ErrorMessage from Interface = 12.18.2020 21:52:58	AlexTest	Connection Error.
LoginError on MFP RCKMKYCAF3D9BC. ErrorCode = -4. ErrorMessage from Interface = 12.18.2020 21:52:58	RCKMKYCAF3D9BC	Authentication Error.//

Ich würde mich sehr freuen, wenn das einfach ein kleiner weiterer Eingriff ist und mir jemand helfen kann.
Vielen Dank schon mal.

Content-Key: 633076

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

Printed on: April 25, 2024 at 01:04 o'clock

Member: Pjordorf
Pjordorf Dec 18, 2020 at 22:28:15 (UTC)
Goto Top
Hallo,

Zitat von @duckknight:
In eine weitere Datei schreiben, die sich ERROR.LOG nennt klappt auch, aber ich würde es gerne in einer Datei haben und das dann auch mit der Beschreibung.
https://ss64.com/nt/errorlevel.html
https://hope-this-helps.de/serendipity/archives/BATCH-Richtige-ERRORLEVE ...
https://www.robvanderwoude.com/errorlevel.php

Gruß,
Peter
Member: duckknight
duckknight Dec 19, 2020 at 10:18:12 (UTC)
Goto Top
Danke, aber ich hatte schon versucht mit verschiedenen Errorlevel zu arbeiten, es kommt aber ja immer nur 0 oder 1 raus, da die Abfrage ja auf Error zielt. Habe aus den Links auch noch ein paar infos versucht, komme aber nicht weiter.
Der Plan war jetzt den Teil:

find /i "ERROR" >> ERROR.LOG

nicht in den Error.log zu schreiben, sondern in eine Variable und dann bei der Ausgabe

find /i "ERRROR" > [VARIABLE]

if not errorlevel 1 echo beim Reboot %%I ist folgende Fehler aufgetreten: [VARIABLE] >> rebootlog.txt

Die Errorlevel hatte ich schon versucht, bekomme aber tatsächlich nur 0 und 1 zurück, also eine 2,3,4,... gibt es nicht bei der Abfrage.
Ich bin immernoch dankbar über jeden Hinweis.
Jeder reboot bringt mir ja eine Zeile, die dann in den ERROR.LOG geschrieben wird.
Dann muss ich die doch auch anstelle in eine Datei in eine Variable bekommen. (Ich habe gestern schon viele Stunden die Suchmaschinen bemüht aber leider blieb alles erfolglos.
Member: duckknight
duckknight Dec 19, 2020 at 20:59:07 (UTC)
Goto Top
Hallo liebe Gemeinde, ich habe nichts efunden (immernoch nicht, da habe ich mir anders geholfen und schreibe nun die "Antwort" in eine Datei und hole mir die dann wieder heraus, wenn ein Fehler aufgetreten ist:


:Start
echo %DATE% - %TIME% ######## >> __rebootlog.txt
for /f %%I in (reboot.txt) do (
MFP-REBOOT.exe -ip=%%I -pw=initpassword -ssl=true -endapp=true | find /i "ERROR" > ERRORLOG.LOG
if errorlevel 1 echo SUCESS reboot System %%I wurde erfolgreich gestartet >> rebootlog.txt

if not errorlevel 1 do (
FOR /F "tokens=*" %%A in (ERRORLOG.LOG) do (echo ERROR @ reboot %%I Folgender Fehler ist aufgetreten: %%A >> rebootlog.txt
)

)
PAUSE

Das ganze funktioniert mit diesem Zwischenschritt und ist im Ergebnis genau was ich haben will aber nicht so wie ich es mir vorstelle.
ich würde den Zwischenschritt mit der Datei gerne sein lassen.

KANN MIR JEMAND NOCH BEI DEM FEHLER HELFEN:
Bei der FOR Schleife (im CMD Fenster) bekomme ich noch die Meldung:
Der Befehl "do" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Was ist denn da falsch? ... oder in der Syntax nicht sauber? Wenn ich das do wegnehme funktioniert nichts mehr.
Kann jemand mir da auch noch helfen?

Danke schon mal!