Win Batch if exist und findstr

Gast #5892594
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
(Firma: TWcom Dienstleistungen) #5892738
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
Gast #5892774
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
---------------------
#5892827
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.
Gast #5893393
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...
Gast #5893436
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.
#5895599
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.
Gast #5895760
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.