Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Batch max. Speicherkapazität einer Variable

Mitglied: Patrick24

Patrick24 (Level 1) - Jetzt verbinden

05.12.2019 um 21:32 Uhr, 394 Aufrufe, 15 Kommentare

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
Mitglied: 141965
05.12.2019, aktualisiert um 21:52 Uhr
https://stackoverflow.com/questions/40295503/windows-batch-variables-siz ...
The maximum for a numeric variable in batch is 2^31.
Bitte warten ..
Mitglied: rubberman
05.12.2019 um 22:21 Uhr
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
Bitte warten ..
Mitglied: erikro
06.12.2019 um 09:21 Uhr
Moin,

nimm die Powershell. Da hat der decimal einen maximalen Wert von 79.228.162.514.264.337.593.543.950.335. Das sollte reichen.

Liebe Grüße

Erik
Bitte warten ..
Mitglied: erikro
06.12.2019 um 09:22 Uhr
Moin,

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.

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
Bitte warten ..
Mitglied: rubberman
06.12.2019 um 10:15 Uhr
Korrekt. Ich dachte das wäre bereits klar geworden. Im Regelfall reden wir von einem Signed Integer mit 32 Bit Breite. Darüber hinaus wird nichts implizit zu einer Zahl konvertiert.

Steffen
Bitte warten ..
Mitglied: Patrick24
06.12.2019 um 17:46 Uhr
Also würde es nicht gehen?
Oder könnte ich die Zeichen in verschiedenen Variablen getrennt verarbeiten?
Gibt es ein max. für die Anzahl von Variablen?

LG
Patrick
Bitte warten ..
Mitglied: rubberman
06.12.2019 um 19:12 Uhr
Also würde es nicht gehen?
Was würde denn nicht gehen? Vielleicht erklärt du mal was du eigentlich vorhast, damit dir zu helfen ist. Sonst wird das nix.

Steffen
Bitte warten ..
Mitglied: Patrick24
06.12.2019 um 22:29 Uhr
Ich will mit Batch ein Spiel machen (nein ich bin nicht verückt und ja ich weiß das Batch für Spiele ungeeignet ist, ich hab einfach nur viel zu viel Zeit ;))
Bei dem Spiel soll es auch eine Speicherfunktion geben die alle Werte in eine Variable speichert und dann die Daten codiert in einer txt speichert. Jetzt wird der Code für die Spielstände schon uncodiert sehr lang sein und deswegen meine Frage mit dem max. Kapazität der Variablen und Anzahllimit von Variablen.

LG
Patrick
Bitte warten ..
Mitglied: rubberman
06.12.2019 um 23:13 Uhr
Immer noch viel zu unspezifisch. Aber wie auch immer, du hast 8191 Zeichen in einer Variablen zur Verfügung. Wofür du für Spielstände eine Variable in der Größe brauchst, erschließt sich mir aber absolut nicht. Speichern kannst du sie sowieso nur in einer Datei.

Steffen
Bitte warten ..
Mitglied: Patrick24
07.12.2019 um 14:03 Uhr
8191 Zeichen sollten reichen.
Wäre zu komleziert hier alles genau zu erklären ;)
Kann man unendlich viele Variablen erzeugen?
Bitte warten ..
Mitglied: rubberman
07.12.2019, aktualisiert um 14:15 Uhr
Du kannst deinen Arbeitsspeicher voll machen. Das hat nichts mit der Anzahl der Variablen zu tun.
Aber wie gesagt, für mich klingt das alles so, als würdest du in eine völlig falsche Richtung laufen. Aber wenn du es nicht erklären kannst/willst ist dir sowieso nicht zu helfen.

Steffen
Bitte warten ..
Mitglied: 141965
07.12.2019, aktualisiert um 17:15 Uhr
Zitat von Patrick24:
Kann man unendlich viele Variablen erzeugen?
Wenn man so extrem viele Variablen anlegen will ist die Programmierung offensichtlich schon ineffektiv geplant, meist resultierend aus Unkenntnis.

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.
Bitte warten ..
Mitglied: Patrick24
07.12.2019 um 18:52 Uhr
Ich weiß das Batch für Spiele nicht geeignet ist. Ich will einfach nur mich einbischen mit Batch beschäftigen und ein kleines Game programmieren. Würde ich wirklich ein ernsthafte Spiel entwickeln wollen würde ich schon auf java,c++ usw. zurückgreifen. Das mit dem Variablen Limit wollte ich nur wissen das es später nicht zu Problem kommt (natürlich brauche ich nicht 2000 Variablen, es ging nur darum ob es ein Limit von z.B. 30,40,50 oder 100 gibt)

LG
Patrick
Bitte warten ..
Mitglied: rubberman
08.12.2019 um 13:58 Uhr
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
Bitte warten ..
Mitglied: Patrick24
08.12.2019 um 16:38 Uhr
Sieh mein vorhaben mit den Batch Game einfach als kleine Challenge für nebenbei an. In anderen Sprachen komme ich auch ohne GO TO klar sonst würde ich java wohl nicht beherrschen.

LG
Patrick
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Download per Batch auf max. 5 begrenzen!
Frage von 136293Batch & Shell1 Kommentar

Hallo! Mein Name ist Tabea und ich möchte wenn möglich den Download auf max. 5 begrenzen! Über eine Korrektur ...

Netzwerkmanagement
MySQL-Variable max-connetction
gelöst Frage von piipapoNetzwerkmanagement2 Kommentare

Hallo liebe Community, für meine Projektarbeit zum Thema Monitoring bin ich auf ein Problem gestoßen, welches ich lösen konnte ...

Datenbanken
SQL-Abfrage mit MAX()
gelöst Frage von FrAmErDatenbanken9 Kommentare

Hallo zusmamen, ich komm leider bei einem Problem nicht weiter. Angenommen wir haben eine SQL-Tablle die folgendermaßen aussieht: Spiel ...

Datenbanken
SQL MAX statt Autowert
gelöst Frage von Alexander2Datenbanken6 Kommentare

Hallo zusammen, ich habe eine alte Access MDB mit Autowert als Primärschlüssel. Die will ich nun auf einen SQL ...

Neue Wissensbeiträge
Sicherheit
0-day Schwachstelle im Internet Explorer
Information von kgborn vor 3 TagenSicherheit1 Kommentar

In Microsofts Internet Explorer gibt es eine 0-day Schwachstelle in der Scripting Engine, die faktisch alle Browser- und Windows-Versionen ...

Internet

Internet-Speedtest Automatisieren via Befehlszeile, cmd, Bash (Windows, Linux, FreeBSD, Mac)

Tipp von anteNope vor 4 TagenInternet6 Kommentare

Also das hier ist irgendwie an mir vorbeigegangen. Einfacher geht es schlicht nicht mehr. Mit "-s 28624 wähle ich ...

Administrator.de Feedback

Entwicklertagebuch: Codeblöcke auf unseren Seiten

Information von admtech vor 4 TagenAdministrator.de Feedback8 Kommentare

Hallo Administrator User, Unsere Codeblöcke werden ab sofort anders dargestellt. Die Codeblöcke können nun direkt per Copy&Paste kopiert werden. ...

Humor (lol)
Internet - auch 2020 noch Neuland ?
Erfahrungsbericht von Henere vor 5 TagenHumor (lol)6 Kommentare

Heute eine Mail der Schule meiner Tochter bekommen. Blabla Umweltschutz bla bla siehe Anhang. Dumm nur: Da hab ich ...

Heiß diskutierte Inhalte
Hardware
Was ist der beste Rechner für CAD und Statische Berechnungen
Frage von Halle20Hardware40 Kommentare

Guten Morgen Zusammen, Ich stehe vor der Aufgabe für unsere Firma neue Rechner für die Zeichner und Statiker anzuschaffen ...

Visual Studio
VB.NET - XML Daten lesen und in DataGrid schreiben
Frage von ComX123Visual Studio35 Kommentare

Hallo zusammen Bin neu hier und hab da ne kleine Frage, da ich nicht weiter komme. Habe eine XML ...

Batch & Shell
Mit Hilfe von Batch numerisch sortieren
gelöst Frage von Booster123Batch & Shell11 Kommentare

Guten Tag liebe Community, ich habe leider ein Problem mit meiner Batch Datei. Habe es jetzt geschafft das ich ...

Windows Server
Computerobjekte in AD auf Gerätetyp filtern
Frage von SchroediWindows Server11 Kommentare

Hallo zusammen, gibt es eine Möglichkeit in der AD die Computerobjekte auf Gerätetyp, also Notebook / Desktop-PC in einer ...