mjay-core
Goto Top

Per Batch erste Zeile aus TXT-Datei auslesen, in Variable speichern und dann vergleichen

Hallo Leute,
in einer TXT-Datei steht folgendes:
38671360
Mit Leerzeichen nach dem Wert und neuer Zeile. Das interessiert mich jedoch nicht.

Ich möchte diesen Wert gerne einlesen, als Variable speichern und dann mit dem Inhalt einer anderen Variable vergleichen (größer als).
Das ganze soll dann in einer Batch-Datei ausführbar sein.

Ich versuche das jetzt schon ne Weile aber scheitere spätestens am Vergleich.
Wird das vielleicht als String und nicht als Int etc. eingelesen?

Danke für eure Hilfe.
Grüße

Content-Key: 166683

Url: https://administrator.de/contentid/166683

Ausgedruckt am: 28.03.2024 um 21:03 Uhr

Mitglied: 60730
60730 22.05.2011 um 00:38:19 Uhr
Goto Top
moin,

  • wie sehen denn deine bisherigen Versuche aus?

Gruß
Mitglied: Friemler
Friemler 22.05.2011 um 01:15:26 Uhr
Goto Top
Hallo mjay-core,

Batchscript arbeitet fast rein textorientiert, Ausnahme ist nur der Befehl SET mit dem Parameter /A, damit lassen sich Berechnungen durchführen.

Da hinter dem Wert noch ein Leerzeichen in der Textdatei steht, nimm am besten sowas wie im folgenden:
for /f "usebackq" %%v in ("DeineDatei.txt") do set "Variable=%%v"
Zum Verständnis verweise ich auf mein Tutorial zur FOR-Schleife.

Zum Thema Vergleich: IF /?

Gruß
Friemler
Mitglied: QaMarath
QaMarath 22.05.2011 um 02:29:09 Uhr
Goto Top
Morgen,
also wenn du sagst das du aus einer datei nur die erste zeile auslesen willst,
würde ich das mit

set /p Wert=<Datei

lösen. Das /P muss da hin weil der user dadurch normalerweise zur eingabe aufgefordert wird,
in diesem Fall wird einfach die erste Zeile der Datei genutzt.
(Die Datei muss im selben Ordner wie deine Batch liegen, sonst musst du den gesamten Pfad angeben
was mit %Userprofile% oder anderen Umgebungsvariablen am besten geht.)

Das Leerzeichen nach dem Wert, entfernst du indem du die Variable %Wert%, die du oben erstellt hast,
noch einmal mit

set /a Wert=%Wert%

umwandelst, denn /A wird nur zum Rechnen oder sonstigem Zahlen-Kram benutzt. Sprich das Leerzeichen wird unwichtig und einfach entfernt.

Angenommen du willst den nun eingelesenen Wert mit der Zahl 10 vergleichen, bietet sich if /... an.
Es gibt da 6 besondere Operatoren, habs mal aus der cmd.exe kopiert:

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

Dann die ganz normale Form:

IF "%Wert%" LSS "10" @echo %Wert% ist kleiner als 10.

Für LSS kannst du nun jeden anderen Operator einsetzen.


Viel Spaß noch beim Vergleichen, ich hoffe ich konnte dir helfen!

QaMarath
Mitglied: QaMarath
QaMarath 22.05.2011 um 02:33:58 Uhr
Goto Top
Ich bins noch mal,
sorry hatte nicht gesehen, das du in der Beschreibung schon "größer-als" gesagt hattest.

Also würden sich GTR bzw. GEQ anbieten. =)

QaMarath
Mitglied: mjay-core
mjay-core 22.05.2011 um 08:37:25 Uhr
Goto Top
Ich danke euch für eure schnelle und gute Hilfe.
Besonders QaMarath hat es sehr gut und ausführlich beschrieben.
Meine Versuche waren richtig. Der Fehler war die Umwandlung der Werte damit verglichen werden kann.

Das hats gebracht:
set /a Wert=%Wert%

Jetzt klappt das was ich vor hatte. Vielen Dank!
Grüße