find kommando ändert errorlevel nicht unter WinXP

01/09/2008 - 02:18 von Martin Tauscher | Report spam
Hallo zusammen,

ich bin fast am verzweifeln bei einer Batch.

Und zwar habe ich eine Datei file.txt, in der evtl. noch Reste eines
html-Tags vorkommen.
Ich möchte nun prüfen, ob dies Tatsàchlich so ist.

Dazu ist ja eigentlich das Kommando find da.

Ich habe mir nun gedacht, dass ich das so machen könnte:

find "html" file.txt >nul
if %errorlevel%==1 goto htmlGefunden
if %errorlevel%==0 goto ipAdresseGefunden

:htmlGefunden
echo %errorlevel%
echo html gefunden
pause

:ipAdresseGefunden
echo %errorlevel%
echo ip gefunden
pause



Ziel des ganzen ist also, herauszufinden, ob noch irgendwo in der
Datei die Ziffernfolge html auftaucht.
Das kann sein ein
<html
</html
html>
/html>

Leider àndert find aber nicht das errorlevel, sondern làsst das immer
auf dem gleichen Wert. Warum ist das so? Was mache ich falsch?

Wenn z.B. die Folge /html> in der Datei steht, dann müsste find den
errorlevel auf 1 abàndern. Macht es aber nicht. Stattdessen steht er
weiter auf 0, wie mir das echo %errorlevel% anzeigt.



Das ganz große Ziel ist, die Datei file.txt dahingehend zu überprüfen,
ob in dieser Datei nur eine ip-Adresse und sonst nichts steht oder ob
noch andere Zeichen enthalten sind.
Wenn in der Datei nur eine ip-Adresse steht (also die vier Oktett
getrennt durch die drei Punkte), dann kann damit weitergearbeitet
werden. Sind noch andere Zeichen enthalten muss was anderes passieren,
da sonst die Batch abstürzt.

Viele Grüße
Martin
 

Lesen sie die antworten

#1 Herbert Kleebauer
01/09/2008 - 10:38 | Warnen spam
Martin Tauscher wrote:

Und zwar habe ich eine Datei file.txt, in der evtl. noch Reste eines
html-Tags vorkommen.
Ich möchte nun prüfen, ob dies Tatsàchlich so ist.

Dazu ist ja eigentlich das Kommando find da.

Ich habe mir nun gedacht, dass ich das so machen könnte:

find "html" file.txt >nul
if %errorlevel%==1 goto htmlGefunden
if %errorlevel%==0 goto ipAdresseGefunden

:htmlGefunden
echo %errorlevel%
echo html gefunden
pause

:ipAdresseGefunden
echo %errorlevel%
echo ip gefunden
pause

Ziel des ganzen ist also, herauszufinden, ob noch irgendwo in der
Datei die Ziffernfolge html auftaucht.
Das kann sein ein
<html
</html
html>
/html>

Leider àndert find aber nicht das errorlevel, sondern làsst das immer
auf dem gleichen Wert. Warum ist das so? Was mache ich falsch?



1. Vielleicht steht in der Datei "HTML" und nicht "html".
2. Vielleicht hast du irgenwann eine Variable errorlevel auf 0 gesetzt,
dann ist die interne errorlevel Variable nicht mehr sichtbar.

Wenn z.B. die Folge /html> in der Datei steht, dann müsste find den
errorlevel auf 1 abàndern. Macht es aber nicht. Stattdessen steht er
weiter auf 0, wie mir das echo %errorlevel% anzeigt.



Umgekeht, wenn die Zeichenfolge gefunden wird ist errorlevel 0.


Das ganz große Ziel ist, die Datei file.txt dahingehend zu überprüfen,
ob in dieser Datei nur eine ip-Adresse und sonst nichts steht oder ob
noch andere Zeichen enthalten sind.
Wenn in der Datei nur eine ip-Adresse steht (also die vier Oktett
getrennt durch die drei Punkte), dann kann damit weitergearbeitet
werden. Sind noch andere Zeichen enthalten muss was anderes passieren,
da sonst die Batch abstürzt.



Dann würde ich doch besser überprüfen ob tatsàchlich nur eine IP Adresse
vorhanden ist anstatt nach "html" zu suchen.

Ungetestet:

@echo off
for /f "tokens=1-4* delims=." %%i in (file.txt) do (
if [%%l]==[] goto error
if not [%%m]==[] goto error

set /a a=%%i & if not [%a%]==[%%i] goto :error
set /a b=%%j & if not [%b%]==[%%j] goto :error
set /a c=%%k & if not [%c%]==[%%k] goto :error
set /a d=%%l & if not [%d%]==[%%l] goto :error
)
echo all ok
goto :eof

:error
echo error

Ähnliche fragen