Batch-Datei mit 3 If-Bedingungen - muß über else oder sowas,oder aber wie?

  • #1
P

Pascal

Mitglied
Themenersteller
Dabei seit
08.06.2007
Beiträge
16
Reaktionspunkte
0
Hi,

Code:
@for /F tokens=13,* %%i in ('ipconfig^|find IP-Ad') do @set IPNEW=%%j
if %IP% == %IPNEW% GOTO AGAIN
if %IP% == 192.168.0.200 GOTO AGAIN
if %IP% == 192.168.0.1 GOTO AGAIN

die 2ten beiden IF-Bedingungen werden so nicht beachtet, oder? Irgendwie schwebt mir was von if und else in Kombination vor. Aber genau, weiß ich nicht wie das noch mal war.

Ziel: die 2te und dritte IF-Bedingung, soll wie die erste zum Goto Again führen.

Pascal
 
  • #2
Verarbeitet Ausdrücke in einer Batchdatei abhängig von Bedingungen.

IF [NOT] ERRORLEVEL Nummer Befehl
IF [NOT] Zeichenfolge1==Zeichenfolge2 Befehl
IF [NOT] EXIST Dateiname Befehl

NOT Befehl wird nur dann ausgeführt, wenn die Bedingung nicht
erfüllt ist.

ERRORLEVEL Nummer Bedingung ist erfüllt, wenn das zuletzt ausgeführte
Programm einen Code größer oder gleich der Nummer
zurückgibt.

Zeichenfolge1==Zeichenfolge2
Bedingung ist erfüllt, falls die Zeichenfolgen gleich sind.

EXIST Dateiname Bedingung ist erfüllt, wenn die angegebene Datei existiert.

Befehl Gibt den Befehl an, der bei erfüllter Bedingung ausgeführt
werden soll. Diesem Befehl kann das Schlüsselwort ELSE
folgen. Der Befehl nach dem Wort ELSE wird ausgeführt, wenn
die angegebene Bedingung nicht erfüllt ist (FALSE).

Die ELSE-Klausel muss auf der Zeile mit dem Befehl nach dem IF stehen.
Zum Beispiel:

IF EXIST test.txt (
del test.txt
) ELSE (
echo test.txt fehlt
)

Die beiden folgenden Beispiele funktionieren nicht. Im ersten Fall wird der
DEL-Befehl nicht durch ein Zeilenende abgeschlossen:

IF EXIST test.txt del test.txt ELSE echo test.txt fehlt

In zweiten Fall befindet sich der ELSE-Befehl nicht auf derselben Zeile mit
dem IF Schlüsselwort:

IF EXIST test.txt del test.txt
ELSE echo test.txt fehlt

Hier ein Beispiel, wie alles auf einer Zeile angegeben werden kann:

IF EXIST test.txt (del test.txt) ELSE echo test.txt fehlt

Wenn die Befehlserweiterungen aktiviert sind, wird der IF-Befehl folgendermaßen
verändert:

IF [/I] Zeichenfolge1 Vergleichsoperator Zeichenfolge2 Befehl
IF CMDEXTVERSION Zahl Befehl
IF DEFINED Variable Befehl


manchmal ist die Hilfe des BS hilfreich, ich hoffe auch hier
 
  • #3
ja, o.k. soweit ist mir das schon klar.

Ich will aber wissen, ob man drei IF-Bedingungen gleichzeitig setzten kann? Oder halt 1x IF und 2x Else irgendwie verschachteln, wobei mir 3x IF lieber wäre, weils einfacher wär.

Geht sowas?

Also mal gesprochen:
_______________________________________
Wenn der Clown ne gelbe Nase hat, dann gib ihm ne andere Farbe
Wenn der Clown ne rote Nase hat, dann gib ihm ne andere Farbe
Wenn der Clown ne grüne Nase hat, dann gib ihm ne andere Farbe
.
.
.
rem echo sonst geht es mit dieser Zeile weiter
echo Der Clown hat keine gelbe, rote oder grüne Nase.
___________________________________________________
 
  • #4
IF %clown%==gelb (
SET clown=lila
GOTO xyz
)
IF %clown%==gruen (
SET clown=lila
GOTO xyz
)
IF %clown%==rot (
SET clown=lila
GOTO xyz
)

IF %clown%==lila (
ECHO Der Clown ist lila
) ELSE (
Echo der Clown ist farblos oder %clown%
)
 
  • #5
O.k., werden die denn dann gleichbedeutend gesehen, die If-Bedingungen? Also wäre das nicht so dann auch möglich:

Code:
:AGAIN
MaleClownZufälligAn.exe
if %CLOWN% == gelb GOTO AGAIN
if %CLOWN% == gruen GOTO AGAIN
if %CLOWN% == rot GOTO AGAIN
:END
echo Der Clown ist nicht gelb, gruen oder rot.
 
  • #6
im Prinzip ja, hab aber festgestellt, das die Abfragen manchmal daneben geben.
Irgendwie sind die Proz heutzutage zu schnell.
Was aber beachtet werden muß ist das vermeiden unnötiger Leerzeichen, sowohl bei Zuweisungen, Abfragen etc

IF %clown% == irgendwas
^ ^
bedeutet übersetzt

Inhalt der Var Clown + leerzeichen mit leerzeichenirgendwas zu vergleichen - und dat ward nix

Ich finde die Variante mit den Klammern übersichtlicher, und was für mich entscheidend ist, sie ist schneller
Lieber einen direkten Sprung, als xundachtzig Abfragen anzufassen.
Bei 3 Abfragen mag es sich zeitlich noch nicht bemerkbar machen, bei 10 oder mehr aber sehr wohl
 
  • #7
jo, da hast du recht. Aber ich finde das einfacher halt. Ich muß mich nochmal in deine Methode reingrübeln. :)
 
Thema:

Batch-Datei mit 3 If-Bedingungen - muß über else oder sowas,oder aber wie?

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben