Hallo, hab ein Problem die Batch funtioniert nicht so wie gedacht... Das findstr oder das Auslesen vom %errorlevel% wird nicht wie erwartet ausgeführt… Das 1. findstr & errorlevelvor der if exist Anweisung werden wie erwartet ausgeführt/gesetzt. Das 2. findstr in der if exist Anweisung wird nicht ausgeführt oder die Var errorlevel werde nicht richtig gesetzt. Das einzige was ich sehe ist dass das errorlevel in der if immer 0 ist. Unabhängig davon ob das gesuchte Wort in der Datei enthalten ist oder nicht. Was muss gemacht damit der Code in der if Bedingung seinen zweck erfühlt? Die report.txt Datei befindet sich im gleichen Ordner wie die Batch. -------------- echo off set FL=D:/ rem 1. find findstr /m "FAILED failed" report.txt echo %errorlevel% if exist %FL% ( rem 2. find findstr /m "FAILED failed" report.txt echo %errorlevel% if %errorlevel%==0 ( COLOR 4F ) else ( COLOR 2F ) ) else ( COLOR 7F echo. echo Pfad nicht gefunden. echo. ) pause
Hi, ja hast recht, habs übersehen. Ändert aber nichts am verhalten. :(
hi, habe es gerade mal getestet. Wenn LW D:\ nicht existent ist, dann wird es grau mit der Meldung "Pfad nicht gefunden". Existiert die report.txt und der String "FAILED" oder "failed" existiert, wird es grün und wenn der String nicht enthalten wird wirds rot. oder verstehe ich hier das Problem nicht???? VG
Danke für die Hilfe. Ja, wird der Pfad nicht gefunden soll die Meldung angezeigt werden. Aber ist "FAILED" oder "failed" nicht enthalten soll es grün werden. Das funktioniert auch. Im Grunde hab ich nur die funktionierende Batch erweitert. Danach funktionierte sie nicht mehr... So funktioniert es ----------------------------- echo off findstr /m "FAILED failed" report.txt echo %errorlevel% if %errorlevel%==0 ( COLOR 4F ) else ( COLOR 2F ) pause ---------------------------- So funktioniert es nicht. Und ich verstehe nicht wieso. ---------------------------- echo off set FL_PRO=D:\ if exist %FL_PRO% ( findstr /m "FAILED failed" report.txt echo %errorlevel% if %errorlevel%==0 ( COLOR 4F ) else ( COLOR 2F ) ) else ( COLOR 7F echo. echo Pfad nicht gefunden. echo. ) pause ---------------------
Der Inhalt in den runden Klammern (somit auch die Ersetzung von %errorlevel%) wird ausgewertet bevor er ausgeführt wird. Mach mal das "Echo Off" weg, dann siehst du das. Lösung kann ich jetzt am Handy nicht vorschlagen. Ggf. mit findstr ... && color A || color B versuchen.
Alex schrieb: > echo %errorlevel% > if %errorlevel%==0 Das If wertet hier den Errorlevel von "Echo" aus! (Also nicht mehr den von findstr)
Hallo, hab das Skript auf das Minimum reduziert. Das findstr setzt das errorlevel in der Klammer nicht unabhängig ob das Suchwort in der Datei enthalten ist oder nicht. ---------------------------------- set FL_PRO=D:\ if exist %FL_PRO% ( findstr /m "failed" report.txt if %errorlevel%==0 ( COLOR 4F ) else ( COLOR 2F ) ) Pause ----------------------------------- Ausgabe des Skriptes --------------------------------- if exist D:\ ( findstr /m "failed" report.txt if 0 == 0 (COLOR 4F ) else (COLOR 2F ) ) report.txt pause Drücken Sie eine beliebige Taste . . . ---------------------------------- @Stefan P. Das Errorlevel müsste dann zumindest richtig angezeigt werden was es nicht tut. Bin grade echt überfragt wieso es nicht funktioniert...
Siehe meine Antwort oben. %errorlevel% wird zu 0 ersetzt bevor findstr überhaupt aufgerufen wird. Setze probehalber echo on und studiere die Ausgabe. Dann wirst du das sehen.
Ok, hatte es falsch verstanden gehabt... Aber wie erzwinge ich die richtige Verarbeitung? START /wait findstr /m "failed" report.txt Hilft auch nicht.
Die Existenz eines Ordners prüft man klassisch mit
1 | IF EXIST D:\PFAD\NUL GOTO ERROR |
Denn die magische Datei "NUL" existiert in jedem vorhandenen Ordner. Theoretisch geht das auch mit anderen Gerätenamen, aber die können seltsame Effekte verursachen.
Macht man heute immer nach Batch-Datei Programmierung? Gefühlt habe ich das vor 30 Jahren mal gemacht. Ich dachte, Windows hätte schon bessere Scriptsprachen mit an Bord. Ich hätte beinahe gesagt: Geh in die Stadtbücherei, da gibt es: "Das große Buch zur Batchverarbeitung" von Data Becker.
PittyJ schrieb: > Ich dachte, Windows hätte schon bessere Scriptsprachen mit an Bord. Wie wäre es mit VBScript oder JScript? :-) Der eigentliche Ersatz ist die PowerShell, aber damit werde ich irgendwie nicht so richtig warm. Vermutlich bin ich DOS- und Linux-versaut.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.