Programmieren - alles kontrollieren 4.937 Themen, 20.647 Beiträge

Batch-Programmierung: Variable bewerten

manela / 1 Antworten / Flachansicht Nickles

Hallo,


ich übernehme eine Variable per Batch-Datei in eine Text-Datei:


Echo %1 ... Ausgabe in der Textdatei "2.0099"


Jetzt möchte ich eine Aktion daran knüpfen, die ausgelöst wird, wenn der Wert z.B. über 1,5 und unter 1,7 ist. Eine andere Aktion soll ausgelöst werden, wenn der Wert über 1,7 ist...


Kann mir jemand weiterhelfen? Ich finde im Netz nichts passendes.


Vielen Dank!


Gruß, Manu

bei Antwort benachrichtigen
REPI manela „Batch-Programmierung: Variable bewerten“
Optionen

welches BS ?

mit dem CMD unter BS >= NT hat der IF Befehl folgende erweiterte Syntax !

help if
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

Dabei kann der Vergleichsoperator einer der folgenden sein:

EQU - gleich
NEQ - nicht gleich
LSS - kleiner als
LEQ - kleiner als oder gleich
GTR - größer als
GEQ - größer als oder gleich

Die /I-Option wird angegeben, um die Groß-/Kleinschreibung beim Vergleich zu
ignorieren. Die /I-Option kann auch in der Form Zeichenfolge1==Zeichenfolge2
verwendet werden. Diese Vergleiche sind allgemein, das heißt, wenn beide
Zeichenfolgen nur aus Ziffern bestehen, werden die Zeichenfolgen in Zahlen
umgewandelt, und es wird ein nummerischer Vergleich durchgeführt.

Die Bedingung CMDEXTVERSION arbeitet genau wie ERRORLEVEL, nur dass
dabei mit einer internen Versionsnummer der Befehlserweiterungen verglichen
wird. Die erste Versionsnummer ist 1. Diese wird um eins erhöht werden, wenn
bedeutende Verbesserungen an den Befehlserweiterungen gemacht werden.
Die Bedingung CMDEXTVERSION ist falsch, wenn die Befehlserweiterungen nicht
aktiviert sind.

Die Bedingung DEFINED arbeitet genau wie EXIST, bezieht sich aber auf
den Namen einer Umgebungsvariablen und ist wahr, wenn die Umgebungs-
variable definiert ist.

Der Ausdruck %ERRORLEVEL% wird zu einer Zeichendarstellung des aktuellen
Werts der Variablen ERRORLEVEL expandiert (vorausgesetzt, es gibt nicht bereits
eine Umgebungsvariable mit dem Namen ERRORLEVEL, deren Wert man dann erhält).
Nachdem ein Programm ausgeführt wurde, sieht die Verwendung von ERRORLEVEL
wie folgt aus:

goto Antwort%ERRORLEVEL%
:Antwort0
echo J für Ja eingegeben
:Antwort1
echo N für Nein eingegeben

oder unter Verwendung der Vergleichsoperatoren:

IF %ERRORLEVEL% LEQ 1 goto ok

Der Ausdruck %CMDCMDLINE% wird zu der originalen Befehlszeile expandiert,
die CMD.EXE vor irgendeiner Bearbeitung übergeben wird (vorausgesetzt, es gibt
nicht bereits eine Umgebungsvariable mit dem Namen CMDCMDLINE, deren Wert man
dann erhält).

Der Ausdruck %CMDEXTVERSION% wird zu einer Zeichendarstellung des aktuellen
Werts der Variablen CMDEXTVERSION expandiert (vorausgesetzt, es gibt nicht
bereits eine Umgebungsvariable mit dem Namen CMDEXTVERSION, deren Wert man
dann erhält).


Unter Win9x und Me sieht es da schon dürftiger aus , da hier nur abgefragt werden kann. ob eine Zeichenfolge identisch ist !

Gruß


repi

Es empfiehlt sich immer, etwas Linux im Hause zu haben.
bei Antwort benachrichtigen