Batch-Programmierung-Einstellung ERRORLEVEL von fehlgeschlagenen Befehl SUCHEN
Habe ich festgestellt, die Notwendigkeit zu berichten, eine Fehler-Niveau auf ein Programm, das nennt batch-Skripten.
Das Skript erstellt eine CSV-log-Datei, ich möchte überprüfen, um anzuzeigen, ob das Skript erfolgreich ausgeführt wurde.
Was ich sagen möchte ist so etwas wie
IF NOT FIND "[ERR" "test.csv"
oder zu sagen, dass, wenn die Zeichenfolge "[ERR"
ist nicht in der Ausgabe ERRORLEVEL = 0 ELSE ERRORLEVEL = 1
Hoffe, das macht Sinn. Ich bin sicher, es ist einfach, aber die Einstellung Fehler-Niveaus zu sein scheint, eine königliche Schmerz in der a$se!
Du musst angemeldet sein, um einen Kommentar abzugeben.
FINDEN, "[ERR" " - text.csv" legt den ERRORLEVEL 0, wenn mindestens ein
[ERR
zu finden ist, und 1, wenn kein[ERR
gefunden wird. Sie benötigen eine Möglichkeit zum invertieren der Logik.Wenn alles, was Sie tun möchten, ist sofort 0 zurück, wenn keine
[ERR
gefunden, oder1
wenn mindestens ein[ERR
gefunden, dann würde ich Folgendes verwenden:Wenn Sie möchten, erfassen Sie das Ergebnis in einer Variablen zurückgegeben werden, später, dann:
oder
Wenn Sie bereit sind, um das Ergebnis zu
Unten ist meine ursprüngliche Antwort, die akzeptiert wurde, war noch peinlich falsch 🙁
Danke Corey für den Hinweis auf den Logikfehler. Wie er sagt in seinem Kommentar, den fehlerhaften code unten nur einen Fehler melden, wenn alle Zeilen haben die
[ERR
text./V
führt nur zu einem Fehler (ERRORLEVEL == 1), wenn alle Zeilen in der Datei, die den angegebenen Wert enthalten. Es kehrt den test von enthält x auf nicht enthalten x, mit ERRORLEVEL 0, wenn alle Zeilen gefunden werden, die mit dem test.Beachten Sie, dass die IF-Befehl hat die Logik, die es gibt true zurück, wenn der ERRORLEVEL ist größer als oder gleich folgende Nummer! So
gibt true zurück, für alle Befehle FINDEN. Was Sie brauchen, wenn Sie nur wollen, um zu testen, ob ein Satz in einer Datei:
Nahm mich Alter, um zu arbeiten, raus!
&&
ist eine Art shortcut fürIF NOT ERRORLEVEL 1
, so könnte man ändern Ihre Linie:find "string" "test.txt" > NUL && echo String was found || echo String was not found
Dies ist die Logik, die ich verwendet habe, in eine BAT-Datei zuvor.
Könnten Sie setzen, was Befehle, die Sie wollen, innerhalb der IF/ELSE-Blöcke.