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, 6007 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 ..
Ähnliche Inhalte
CPU, RAM, Mainboards
gelöst Laptop mit defekten Arbeitsspeicher (9)

Frage von Markowitsch zum Thema CPU, RAM, Mainboards ...

CPU, RAM, Mainboards
ThinkCentre M58P: Arbeitsspeicher aufrüsten (4)

Frage von Juweee zum Thema CPU, RAM, Mainboards ...

Windows Server
MSSQL Arbeitsspeicher Auslastung (6)

Frage von Jabberwocky86 zum Thema Windows Server ...

CPU, RAM, Mainboards
Hp Proliant Microserver Gen8 mehr Arbeitsspeicher (5)

Frage von blackhawk17 zum Thema CPU, RAM, Mainboards ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(3)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Netzwerkgrundlagen
Kann auf Freigabe nicht Zugreifen (19)

Frage von leon123 zum Thema Netzwerkgrundlagen ...

Windows Server
DC virtualisieren + wie sichern (SingleDC-Environment) (12)

Frage von KMUlife zum Thema Windows Server ...

Festplatten, SSD, Raid
RAID Controller mit Trim-Funktion, wie ermitteln (11)

Frage von pixel24 zum Thema Festplatten, SSD, Raid ...