Win Batch if exist und findstr

Gast #5892594
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
---------------------
Gast #5893393
Lesenswert?

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 #5895760
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren