Batch max. Speicherkapazität einer Variable
Hi,
ich schreibe gerade eine Batch wo voraussichtlich sehr große Zahlen in einer Variable gespeichert werden sollen (so ca.120 stelig mindestens). Jetzt wäre meine Frage ob es bei Variablen eine max. Speicherkapazität gibt und ob es ein Limit an Variablen gibt.
LG
Patrick
ich schreibe gerade eine Batch wo voraussichtlich sehr große Zahlen in einer Variable gespeichert werden sollen (so ca.120 stelig mindestens). Jetzt wäre meine Frage ob es bei Variablen eine max. Speicherkapazität gibt und ob es ein Limit an Variablen gibt.
LG
Patrick
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 522226
Url: https://administrator.de/forum/batch-max-speicherkapazitaet-einer-variable-522226.html
Ausgedruckt am: 12.04.2025 um 03:04 Uhr
15 Kommentare
Neuester Kommentar

https://stackoverflow.com/questions/40295503/windows-batch-variables-siz ...
The maximum for a numeric variable in batch is 2^31.
The maximum for a numeric variable in batch is 2^31.
Nicht ganz. Der größte Wert der als Zahl geparst werden kann ist 2^31 - 1. Aber das ist Erbsenzählerei.Variablen in Batch sind immer Umgebungsvariablen. Und der Wert von Umgebungsvariablen ist immer ein String (Text). Strings haben ein Limit von 8191 Zeichen in Batch. Wobei die Zeichen der Codezeile mit zählen.
Lediglich bestimmte Kommandos führen eine interne Konvertierung von numerischen Strings zu ganzen Zahlen aus. Neben SET /P, sind das IF, FOR /F, FOR /L, EXIT /B, TIMEOUT, CHCP, MORE, FC und einige mehr.
Wie auch immer, keines dieser Kommandos würde in der Lage sein einen 120 Zeichen langen Sting in eine Zahl zu konvertieren.
Steffen
Moin,
Was dann aber heißt, dass Vergleiche Sortierung nicht mehr numerisch, sondern alphanumerisch erfolgen und man auch nicht mit den Zahlen rechnen kann.
Liebe Grüße
Erik
Zitat von @rubberman:
Lediglich bestimmte Kommandos führen eine interne Konvertierung von numerischen Strings zu ganzen Zahlen aus. Neben SET /P, sind das IF, FOR /F, FOR /L, EXIT /B, TIMEOUT, CHCP, MORE, FC und einige mehr.
Wie auch immer, keines dieser Kommandos würde in der Lage sein einen 120 Zeichen langen Sting in eine Zahl zu konvertieren.
Lediglich bestimmte Kommandos führen eine interne Konvertierung von numerischen Strings zu ganzen Zahlen aus. Neben SET /P, sind das IF, FOR /F, FOR /L, EXIT /B, TIMEOUT, CHCP, MORE, FC und einige mehr.
Wie auch immer, keines dieser Kommandos würde in der Lage sein einen 120 Zeichen langen Sting in eine Zahl zu konvertieren.
Was dann aber heißt, dass Vergleiche Sortierung nicht mehr numerisch, sondern alphanumerisch erfolgen und man auch nicht mit den Zahlen rechnen kann.
Liebe Grüße
Erik

Wenn man so extrem viele Variablen anlegen will ist die Programmierung offensichtlich schon ineffektiv geplant, meist resultierend aus Unkenntnis.
Sowas noch auf Batchbasis zu machen , wäre mir die Zeit zu schade, da kann man die vergeudete Zeit wesentlich besser nutzen, z.B. um diese in Programmierung von nachhaltigen Lösungen zu stecken, anstatt Zeit und Strom mit nutzlosen Spielen zu vergeuden.
Aber wie gesagt, für mich klingt das alles so, als würdest du in eine völlig falsche Richtung laufen.
Dito.Sowas noch auf Batchbasis zu machen , wäre mir die Zeit zu schade, da kann man die vergeudete Zeit wesentlich besser nutzen, z.B. um diese in Programmierung von nachhaltigen Lösungen zu stecken, anstatt Zeit und Strom mit nutzlosen Spielen zu vergeuden.
Unter XP oder noch älteren Windows Versionen (kann mich nicht erinnern) gab es eine Beschränkung für die Größe des Environments eines Prozesses. Die gibt es nicht mehr. Du bist aber nach wie vor von der Größe des Arbeitsspeichers beschränkt. Eine Umgebungsvariable besteht aus "Name=Wert\0". Das \0 ist das Abschlusszeichen eines Strings im Speicher. Jedes Zeichen im Windows Environment ist UTF-16 codiert. Das heißt in der Regel werden 2 Bytes pro Zeichen in Anspruch genommen. Wie schnell du deinen Arbeitsspeicher voll bekommst, hat also nichts mit der Anzahl der Variablen zu tun, sondern mit der Länge der Variablennamens und der Werte. 100 Variablen sind aber trotzdem lediglich Peanuts. Nach wie vor gilt aber, je größer das Environment wird, desto länger dauert es bis der Prozess die Variablen und Werte dort findet. Da Batch ohnehin eine grottenschlechte Performance hat und du an allen Ecken und Enden auf seine Grenzen stößt, ist das aber vermutlich auch egal. Wie du selbst schon eingesehen hast, ist Batch die mit Abstand schlechteste Entscheidung ein Spiel zu entwickeln. Nicht nur dass du das was du dort schreibst nicht mal in eine andere Sprache transferieren kannst (die Syntax von Batch ist mit keiner anderen Sprache vergleichbar), vermutlich versaust du dir durch die exzessive Verwendung von GOTO auch noch den Stil und die Denkweise wie ein Programmfluss auszusehen hat, sodass du in anderen Sprachen gar nicht weißt wie du ohne auskommen kannst...
Steffen
Steffen