Batch If-Anweisung kleiner oder gleich mit negative Zahlen

moiko89
Goto Top

Hallo Leute

Ich bin hier gerade auf ein kleines Problem gestoßen für welches ich keine Lösung finde,
und zwar:
habe ich eine kleine Rechnung in einer Batch gebastelt die eigl. immer in den Minusbereich kommt und sobald das passiert
soll eine If-Anweisung einen goto-Befehl auslösen, allerdings rasselt er durch die IF und er macht einfach weiter im Text.
An was kann das denn liegen?
Hier mal ein Codebeispiel:

Content-Key: 185090

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

Ausgedruckt am: 04.07.2022 um 00:07 Uhr

Mitglied: bastla
bastla 16.05.2012 um 15:04:34 Uhr
Goto Top
Hallo moiko89 und willkommen im Forum!

Es passiert nach dem "if" ja nix, was verhindern würde, dass die Zeile 7 erreicht wird - zB ein "goto :eof" unmittelbar nach Zeile 5 würde das ändern ...

Außerdem führst Du keinen zahlenmäßigen, sondern einen Textvergleich durch (zumindest solange es noch die Anführungszeichen in Zeile 5 gibt) - das wäre allerdings nur relevant, wenn Du zB "15" mit "3" vergleichen würdest (richtig ist's aber trotzdem nicht face-wink) ...

Grüße
bastla
Mitglied: mak-xxl
mak-xxl 16.05.2012 um 15:10:30 Uhr
Goto Top
Moin moiko89,

besser (für alle 3 Fälle) so, beachte dabei Zuweisung, Berechnung, Vergleich und GOTO):

Und neben den Unzulänglichkeiten: Wenn Du
set /a ergebnis=%zahl2%-%zahl1%
- also 20-10 rechnest, wird nix negativ ...

[Edit]Wie immer zu langsam ...[/Edit]

Einen angenehmen Feiertag wünscht mit freundlichen Grüßen von der Insel - Mario
Mitglied: moiko89
moiko89 18.05.2012 um 07:49:42 Uhr
Goto Top
Hey vielen Dank für die Antworten.
Hatte die Konvertierung in Text total übersehen, also es lag im Endeffekt an die ""

Schöne Grüße
Mitglied: bastla
bastla 18.05.2012 um 09:34:16 Uhr
Goto Top
Hallo moiko89!
also es lag im Endeffekt an die ""
Nicht wirklich (die Konvertierung kann sich aber unter anderen Umständen natürlich auch auswirken) - wenn Du nochmals Deinen oben geposteten Code betrachtest wirst Du sehen, dass ganz unabhängig vom Ergebnis der Abfrage in Zeile 5 die Zeile 6 immer erreicht wird (entweder, weil tatsächlich ein Sprung zu ":minus" erfolgt, oder, weil ohne Sprung einfach die Zeile 6 im Ablauf folgt) - daher entweder, wie von Mario gezeigt, alle Möglichkeiten abtesten und entsprechend verzweigen, oder gleich nach der Zeile 5 das tun, was im Fall "größer Null" erforderlich ist und vor dem Label ":minus" einen Sprung zu einem weiteren Teil des Batches einbauen oder per "goto :eof" den Batch beenden ...

Grüße
bastla
Mitglied: moiko89
moiko89 18.05.2012 um 13:01:07 Uhr
Goto Top
Hm ja okay, jetzt wo ich es nochmal nachgetestet habe muss ich euch recht geben.

Ich hab das jetzt so gelöst und es scheint zu funktionieren:



Schöne Grüße moiko89
Mitglied: bastla
bastla 18.05.2012 um 14:18:34 Uhr
Goto Top
Hallo moiko89!

Jetzt wird aber für positive Werte nach der Pause in Zeile 12 immer noch der Teil ab Zeile 14 zusätzlich ausgeführt ...

Grüße
bastla