badbatchcoder
Goto Top

Batch erkennt eine Zahlenfolge nicht als gültige Zahl (Evtl. Umformen von String auf Integer)

Liebes Batch-Team,

ich habe momentan ein Problem mit dem "set /a"-Befehl, bzw. generell mit dem Rechnen von Zahlen.
Ich habe einen String, der Buchstaben und Zahlen enthält mit ":~4" auf eine reine Zahlenfolge gekürzt.
Wenn ich jetzt versuche mit diesen Zahlen weiter zu rechnen, bekomme ich immer eine Fehlermeldung, dass
es keine gültige Zahl ist. Ich bin was das Thema Batch angeht noch ein ziemlicher Anfänger. Ich vermute aber
die Fehlermeldung kommt daher, dass Batch die Zahl als einen falschen Datentypen identifiziert.
Iich hab aber absolut keine Ahnung was ich verändern soll, damit es funktioniert und Batch den gekürzten String als gültige Zahl,
bzw. als Integer anerkennt.

Hier ein Beispiel:
set string=ZAHL100
set zahl=%string:~4%
set /a result=%zahl%-25
echo %result%
Danach kommt statt dem erwünschten Ergebnis eine Fehlermeldung oder das Ergebnis ist 0.
Hat jemand eine Idee, wie man das lösen könnte?
Oder hab ich da einen kleinen Fehler im Skript gemacht? 😬

Vielen Dank im Voraus für eure Hilfe 😀
LG BatchCoder

Content-ID: 613504

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

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

mbehrens
mbehrens 16.10.2020 um 22:15:53 Uhr
Goto Top
Zitat von @BadBatchCoder:

Wenn ich jetzt versuche mit diesen Zahlen weiter zu rechnen, bekomme ich immer eine Fehlermeldung, dass
es keine gültige Zahl ist.

Eine Zeichenkette ist auch keine Zahl.

Ich bin was das Thema Batch angeht noch ein ziemlicher Anfänger. Ich vermute aber
die Fehlermeldung kommt daher, dass Batch die Zahl als einen falschen Datentypen identifiziert.
Iich hab aber absolut keine Ahnung was ich verändern soll, damit es funktioniert und Batch den gekürzten String als gültige Zahl,
bzw. als Integer anerkennt.

Hier ein Beispiel:
set string=ZAHL100
set zahl=%string:~4%
set /a result=%string%-25
echo %result%
Danach kommt statt dem erwünschten Ergebnis eine Fehlermeldung oder das Ergebnis ist 0.
Hat jemand eine Idee, wie man das Lösen könnte?

In dieser Sprache ist nicht möglich mit Hilfe einer Subtraktion von einer Zeichenkette etwas abzuziehen.
rubberman
Lösung rubberman 16.10.2020 um 22:16:12 Uhr
Goto Top
In Zeile 2 definierst du eine Variable zahldie du dann aber in Zeile 3 nicht nutzt. Warum?

Steffen
TK1987
Lösung TK1987 16.10.2020 um 22:16:37 Uhr
Goto Top
Moin,

Zitat von @BadBatchCoder:
Ich bin was das Thema Batch angeht noch ein ziemlicher Anfänger.
mal ganz im Ernst, wieso dann überhaupt Batch? Batch ist seit über 10 Jahren tot. Das jetzt noch zu lernen, macht genauso viel Sinn wie sich heute den Untertagebau anzueignen. Lern lieber gleich Powershell.

Hier ein Beispiel:
set string=ZAHL100
set zahl=%string:~4%
set /a result=%string%-25
echo %result%
Dann guck doch mal was du da tust. Du musst natürlich auch schon die Variable %zahl% beim rechnen benutzen... oder halt auch beim rechnen %string:~4%.

Gruß Thomas
BadBatchCoder
BadBatchCoder 16.10.2020 um 22:20:45 Uhr
Goto Top
Sorry, hab mich verschrieben.
Zeile 3 sollte eigentlich folgendermaßen aussehen:
set /a result=%zahl%-25
rubberman
Lösung rubberman 16.10.2020 um 22:29:32 Uhr
Goto Top
Dann funktioniert dein Code. Das Ergebnis ist 75 wie erwartet.

Steffen
BadBatchCoder
BadBatchCoder 16.10.2020 aktualisiert um 22:35:44 Uhr
Goto Top
mal ganz im Ernst, wieso dann überhaupt Batch? Batch ist seit über 10 Jahren tot. Das jetzt noch zu lernen, macht genauso viel Sinn wie sich heute den Untertagebau anzueignen. Lern lieber gleich Powershell.

Ich möchte mit Batch keine sonderlich spannenden Programme schreiben, sondern einfach nur kleine Skripte erstellen, die zum Beispiel automatisch Dateien in chronologischer Reihenfolge in Ordnern sortieren oder mir einfach generell viel Arbeit ersparen. Und dafür ist es mir dann auch zu schade mich extra noch mit Powershell zu befassen.

Dann guck doch mal was du da tust. Du musst natürlich auch schon die Variable %zahl% beim rechnen benutzen... oder halt auch beim rechnen %string:~4%.

Habs schon geändert. Ich weis, ich hab ausversehen statt %zahl% in der 3. Zeile %string% benutzt.
TK1987
TK1987 16.10.2020 um 22:48:32 Uhr
Goto Top
Zitat von @BadBatchCoder:
Ich möchte mit Batch keine sonderlich spannenden Programme schreiben, sondern einfach nur kleine Skripte erstellen, die zum Beispiel automatisch Dateien in chronologischer Reihenfolge in Ordnern sortieren oder mir einfach generell viel Arbeit ersparen. Und dafür ist es mir dann auch zu schade mich extra noch mit Powershell zu befassen.
Falscher Ansatz. Auch wenn es vielleicht auf dem ersten Blick nicht den Anschein macht, Powershell ist deutlich leichter zu lernen als Batch.
rubberman
rubberman 16.10.2020 um 22:52:17 Uhr
Goto Top
Hat er schon mehrfach gelesen (auch von mir).

Steffen
mbehrens
mbehrens 16.10.2020 um 22:54:40 Uhr
Goto Top
Zitat von @BadBatchCoder:

Ich möchte mit Batch keine sonderlich spannenden Programme schreiben, sondern einfach nur kleine Skripte erstellen, die zum Beispiel automatisch Dateien in chronologischer Reihenfolge in Ordnern sortieren oder mir einfach generell viel Arbeit ersparen. Und dafür ist es mir dann auch zu schade mich extra noch mit Powershell zu befassen.

Sehr schade, vertane Zeit.

Die CMD kennt noch nicht mal reguläre Ausdrücke face-wink