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, 5966 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

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Exchange Server
Maximale Größe für empfangene Nachricht (5)

Frage von HeinrichM zum Thema Exchange Server ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...