Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Größe des Arbeitsspeicher auslesen

Frage Entwicklung Batch & Shell

Mitglied: swidch

swidch (Level 1) - Jetzt verbinden

18.11.2009, aktualisiert 11:12 Uhr, 5977 Aufrufe, 4 Kommentare

Ich versuche die Größe des Arbeitsspchers auszulesen und diesen dann nicht in Byte anzuzeigen, sondern in MB.
Ab einer gewissen Zahlengröße, gibt es bei der Division einen Fehler.
Hat jemand eine Lösung?

01.
@echo off 
02.
for /F "delims=" %%a in ('netsh diag show computer /v ^| find "TotalPhysicalMemory"') do call :splitram %%a 
03.
goto :eof 
04.
 
05.
 
06.
:splitram 
07.
set /a mem=%2 
08.
set /a mem=%mem%/1024 
09.
set /a mem=%mem%/1024 
10.
echo Memory: %2 Byte>>Memory_%COMPUTERNAME%.txt 
11.
echo Memory: %mem% MB>>Memory_%COMPUTERNAME%.txt



01.
Output1: 
02.
Memory: 2146418688 Byte 
03.
Memory: 2046 MB
01.
Output2: 
02.
Memory: 2683285504 Byte 
03.
Memory: -1537 MB

Danke schon mal im vorraus.
Christian
Mitglied: 76109
18.11.2009 um 13:04 Uhr
Hallo swidch!

Der vermeindliche Fehler hängt mit dem Datentyp Long zusammnen.

32-Bit Zahlenwert = 4.294.967.295 = Long von -2.147.483.648 bis +2.147.483.647

Bei der Berechnung ist das (-)Vorzeichen-Bit 31 gesetzt und ergibt zwangsläufig bei einer Berechnung z.B. Division einen -Wert

Gruß Dieter
Bitte warten ..
Mitglied: miniversum
18.11.2009 um 13:25 Uhr
Die einzige Möglichkeit das in Batch zu machen ist dann der ungenauere weg indem man durch 1000 statt 1024 teilt indem man die letzten 3 stellen abschneidet.
set mem=%mem:~0,-3%

Alternativ kann man systeminfo benutzen. Dort wird der Arbeitsspeicher schon in MB angezeigt.
Bitte warten ..
Mitglied: swidch
18.11.2009 um 13:51 Uhr
An die unscharfe Lösung hab ich auch schon gedacht.
Ebenso an die Alternative mit systeminfo.
Leider liefert mir Systeminfo einen Wert mit einer Huntertertrennung.
Somit kann ich den Wert nicht mehr weiter verarbeiten, außer mir kann jemand sagen wie ich die Hundertertennung weg bekomme...
Bitte warten ..
Mitglied: Biber
18.11.2009 um 14:26 Uhr
Moin swidch,

ich kann zwar als Norddeutscher nur vermuten, was ihr wohl unter einer "Huntertertrennung" versucht zu verbalisieren,
aber falls es nur darum geht, einen Punkt (".") durch gar nichts ("") zu ersetzen, folge dieser Skizze:
(Demo am CMD-Prompt; ">" nicht mit eingeben)
01.
>set "PhysSpeicher=2.028 MB" 
02.
>echo [%PhysSpeicher%] .... [%PhysSpeicher:.=%] 
03.
[2.028 MB] .... [2028 MB]
Allgemeinere Hinweise zum Manipulieren von CMD-Variableninhalten unter SET /?

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Sticky Notes - Autostart unterbinden

Tipp von Pedant zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Netzwerk
gelöst Powershell skript zum Auslesen der im AD angemeldeten User (2)

Frage von jan.kleinel zum Thema Windows Netzwerk ...

Batch & Shell
Maximale Größe zu verarbeitender txt-Dateien mit Batch (5)

Frage von Muck1303 zum Thema Batch & Shell ...

Grafikkarten & Monitore
Matrox Grafikkarte Betriebszeit auslesen (5)

Frage von blade999 zum Thema Grafikkarten & Monitore ...

Batch & Shell
gelöst Bestimmte Zeile einer Textdatei mit Batch auslesen (2)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Flatrates
DeutschlandLAN der Telekom - welche internen IPs? (19)

Frage von qualidat zum Thema Flatrates ...

LAN, WAN, Wireless
Wie Gäste ins Internet bringen? (15)

Frage von xSiggix zum Thema LAN, WAN, Wireless ...

Linux
gelöst Schmaler Scrollbalken in Python-Anwendung (14)

Frage von indi955 zum Thema Linux ...