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
Kommentar vom Moderator Biber am 10.03.2011 um 08:52:18 Uhr
Beitragsart geändert von "Anleitung" auf "Frage".
GELÖST

Per batch Arbeitsspeicher in der Systeminfo auslesen

Frage Entwicklung Batch & Shell

Mitglied: Meister-Petz

Meister-Petz (Level 1) - Jetzt verbinden

10.03.2011, aktualisiert 18.10.2012, 6735 Aufrufe, 17 Kommentare

Ich könnte schwören das ich eine ähnliche Frage schonmal im Forum gesehen habe aber finde sie einfach nicht.

Moin Moin,

könnt ihr mir bei der erstellung einer batch helfen?
Es geht um folgendes ich möchte in der Systeminfo den Arbeitspeicher auslesen und in eine Variable schreiben.
Habe das schon mit findstr gemacht. Aber hier kommt gleich meine erste Frage.
Kann ich auch das auch mit einem anderen Befehl realisieren?
Die Größe des Arbeitsspeichers steht ja immer an der selben Stelle der Systeminfo.
Gibt es da einen Befehl mit dem ich die Zeile und das Wort angeben kann?
Müsste ja mit for /f und token möglich sein, aber ich kenn mich zu wenig aus.

Dann zu meinem zweitem Problem die Systeminfo macht einen tausender punkt (also 1.024).
Wie bekomme ich den weg, sodass nur noch die 1024 in der Variable steht?
Hab schon gelesen, dass das irgendwie mit delims gehen sollte aber bekomm es nicht hin und kenn mich zu wenig mit batch aus.

Für alle Vorschläge bin ich dankbar
Grüße MeisterPetz
Mitglied: BigWim
10.03.2011 um 08:22 Uhr
Moin MeisterPetz,

dann veröffentliche doch mal den aktuellen Stand Deines Scripts, damit man sehen kann, wo und wie man helfen kann.


Markus
Bitte warten ..
Mitglied: Meister-Petz
10.03.2011 um 08:38 Uhr
call systeminfo | findstr /C:"Gesamter physikalischer Speicher" > mem.txt
das ist der punkt meiner ersten Frage find ich einfach nicht schön und da ich nicht immer davon audgehen kann dass ich die info in deutsch bekomme meine Frage
das ich die variable in eine neue txt schreibe ist zwar nicht schön aber besser weiß ich es nicht
for /f "tokens=4" %%i in (mem.txt) do set bla=%%i
if %bla% geq "500" goto :as
Die Variable wird dann nach größe überprüft, ursprung 2. Problem da ich schlecht ne 1.024 mit >=1000 vergleichen kann
if %bla% geq "1000" goto :ok

:ok
regedit /s ramdisk.reg
Ziel ist es die ramdisk größe der Arbeitspeichergröße anzupassen

:as
pause
Bitte warten ..
Mitglied: BigWim
10.03.2011, aktualisiert 18.10.2012
Moin MeisterPetz,

als erster wäre es nett, wenn Du die Formatierungshilfen nutzen würdest. Das steigert die Lesbarkeit sowie die Hilfsbereitschaft.

Zu dem Zahlenproblem habe ich eine zusätzliche Forschleife eingefügt, die bis zu "4 Punkte" filtert. Ich denke, dass sollte erst einmal reichen. Eine Superanleitung zum Thema "For-Schleifen" findest Du übrigens hier.
[edit]
01.
if %WertOhnePunkt% geq "500" goto :as 
Ich bin mir nicht sicher, ob die Anführungszeichen richtig sind. Ich denke eher so:
01.
if %WertOhnePunkt% geq 500 goto :as 
[/edit]


01.
call systeminfo | findstr /C:"Gesamter physikalischer Speicher" > mem.txt  
02.
 
03.
for /f "tokens=4" %%i in (mem.txt) do set bla=%%i 
04.
for /f "tokens=1-4 delims=." %%a in ("%bla%") do Set WertOhnePunkt=%%a%%b%%c%%d 
05.
if %WertOhnePunkt% geq "500" goto :as  
06.
 
07.
if %WertOhnePunkt% geq "1000" goto :ok 
08.
 
09.
:ok 
10.
regedit /s ramdisk.reg  
11.
Ziel ist es die ramdisk größe der Arbeitspeichergröße anzupassen 
12.
 
13.
:as 
14.
pause
Was die Sprache betrifft wäre mein Vorschlag, die vollständige Ausgabe in eine Datei umzuleiten. Dann hast Du die Möglichkeit, mehrere Suchen durchzuführen.
So könntest Du zuerst nach dem "Systemgebietsschema" oder "Eingabegebietsschema" suchen und mit einer IF-Abfrage entsprechend reagieren. Ungetestet etwa so

01.
call systeminfo >Systeminfo.txt 
02.
type systeminfo.txt | findstr /C:"Systemgebietsschema" > Systeminfo_Sprache.txt  
03.
for /f "tokens=4" %%i in (Systeminfo_Sprache.txt) do set Sprache=%%i 
04.
 
05.
If /i "%Sprache% == "de" Set Speicherfrage="Gesamter physikalischer Speicher" 
06.
If /i "%Sprache% == "en" Set Speicherfrage="guckst Du Duden" 
07.
 
08.
type systeminfo.txt | findstr /C:"%Speicherfrage%" >mem.txt  
09.
10.
11.
.

Markus
Bitte warten ..
Mitglied: AndreasHoster
10.03.2011 um 09:40 Uhr
Es nicht aus Systeminfo lesen, sondern aus WMI.
01.
wmic path win32_operatingsystem get TotalVisibleMemorySize /value
Ergibt bei mir als Ausgabe:
TotalVisibleMemorySize=3628208

Name sollte immer Englisch sein, egal was für eine Sprache das OS hat und keine Tausender-Trennzeichen.
Bitte warten ..
Mitglied: bastla
10.03.2011 um 10:22 Uhr
@BigWim
Nur als Annmerkung: Das Zwischenspeichern in einer Datei sollte nicht nötig sein - zB
for /f "tokens=4" %%i in ('systeminfo^|findstr /C:"Gesamter physikalischer Speicher"') do set "bla=%%i"
und
for /f "tokens=1-4 delims=." %%a in ("%bla%") do Set WertOhnePunkt=%%a%%b%%c%%d
ließe sich vielleicht etwas eleganter durch
set "Set WertOhnePunkt=%bla:.=%"
erledigen ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
10.03.2011 um 10:23 Uhr
@AndreasHoster
Einziger Einwand: Die Verwendung von "wmic" erfordert Admin-Rechte ...

Grüße
bastla
Bitte warten ..
Mitglied: AndreasHoster
10.03.2011 um 10:53 Uhr
@bastla:
Danke für den Hinweis.

Ich selber verwende wmic im Normalfall nicht, ich würde es gleich im WSH skripten und dann sind für eine WMI Abfrage keine Adminrecht nötig.
01.
   Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") 
02.
   Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL")                                           
03.
   For Each objItem In colItems 
04.
      WScript.Echo objItem.TotalVisibleMemorySize 
05.
   Next
Bitte warten ..
Mitglied: BigWim
10.03.2011 um 11:11 Uhr
@bastla
Nur als Annmerkung ....
Wie sehr ich diese Worte doch mag. Denn jetzt wirds spannend ....

01.
for /f "tokens=4" %%i in ('systeminfo^|findstr /C:"Gesamter physikalischer Speicher"') do set "bla=%%i" 
02.
> 
Das habe ich anfangs probiert. Nur bei mir fand die Anweisung kein Ende. Deshalb bin ich davon ausgegangen, dass die aus Performencegründen nicht so gelungen ist, vor allem wenn ich zwei oder mehrere Abfragen mache.

Und Danke für diesen Tipp:
01.
set "Set WertOhnePunkt=%bla:.=%" 
02.
> 
"Set" und ich werden wohl keine Freunde mehr. Ich hatte das dunkel in Erinnerung, aber nicht mehr gefunden ...

Markus
Bitte warten ..
Mitglied: bastla
10.03.2011 um 12:12 Uhr
@AndreasHoster
ich würde es gleich im WSH skripten
Auch in dieser Hinsicht bin ich durchaus bei Dir ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
10.03.2011 um 12:15 Uhr
Hallo BigWim!
Deshalb bin ich davon ausgegangen, dass die aus Performencegründen nicht so gelungen ist, vor allem wenn ich zwei oder mehrere Abfragen mache.
Ist eine zielführende Überlegung - allerdings solltest Du dann aber nicht schon vorweg filtern, sondern etwa so vorgehen:
01.
set "Info=%temp%\SysInfo.txt" 
02.
sysinfo>"%Info%" 
03.
for /f "tokens=4" %%i in ('findstr /C:"Gesamter physikalischer Speicher" "%Info%"') do set "bla=%%i"
Noch ein Nachtrag: "call" wird nur zum Aufruf eines Batch-Unterprogrammes benötigt, nicht für den Start von Programmen (dafür gibt es allenfalls "start") ...

Grüße
bastla
Bitte warten ..
Mitglied: BigWim
10.03.2011 um 13:05 Uhr
Hallo Bastla,

Ist eine zielführende Überlegung
Tja, ich bin halt nur ein kleiner Dummer

for /f "tokens=4" %%i in ('findstr /C:"Gesamter physikalischer Speicher" "%Info%"') do set
Das wende ich noch viel zu wenig an. Macht der Gewohntheit, da ich find (und findstr) immer nur mit dem | in Verbindung bringe

Noch ein Nachtrag: "call" wird nur zum Aufruf eines Batch-Unterprogrammes benötigt, nicht für den Start
von Programmen (dafür gibt es allenfalls "start") ...
Nochmals Danke. Eigentlich klar, aber in diesem Fall ohne Überlegung aus dem Verfasserscript genommen. Gelobe Besserung ....

Viele Grüße
Markus
Bitte warten ..
Mitglied: Meister-Petz
10.03.2011 um 13:25 Uhr
Wow das ist mal ein anderer Ansatz

wmic path win32_operatingsystem get TotalVisibleMemorySize /value
der Befehl funtioniert zumindest direkt in der cmd
wenn ich ihn aber als batch ausführen lasse bekomme ich einen: invalid get expression
geht da die Batch zu schnell zu oder was mache ich falsch?
Würde es gerne auch mal auf diesem Weg probieren da ich wirklich nur das bekomme was ich benötige.

Gruß
MeisterPetz
Bitte warten ..
Mitglied: Meister-Petz
10.03.2011 um 13:30 Uhr
Danke für eure tolle Hilfe
das . Problem ist auf alle Fälle gelöst
Habe nur gerade keine Zeit das mit dem 2. Prob zu testen
Werde euch aber auf alle Fälle bescheid geben

Grüße
MeisterPetz

PS:
das call kam von mir und ich habe es einfach nicht besser gewußt
Bitte warten ..
Mitglied: bastla
10.03.2011 um 14:35 Uhr
Hallo Meister-Petz!

Vielleicht so:
for /f "tokens=2 delims==" %%i in ('wmic path win32_operatingsystem get TotalVisibleMemorySize /value^|findstr "TotalVisibleMemorySize"') do set "Speicher=%%i"
Grüße
bastla
Bitte warten ..
Mitglied: bastla
10.03.2011 um 14:36 Uhr
@BigWim
Tja, ich bin halt nur ein kleiner Dummer
Wieso das denn?

Grüße
bastla
Bitte warten ..
Mitglied: BigWim
10.03.2011 um 15:57 Uhr
@bastla,

Wieso das denn?
Mich ärgert das, wenn ich Dinge vor Augen habe und doch nicht sehe ...

Markus
Bitte warten ..
Mitglied: Meister-Petz
13.03.2011 um 19:49 Uhr
Danke Batstla

funtioniert einwandfrei
(sorry für die späte antwort, konnte es aber erst heute testen)

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

Powershell 5 BSOD

(2)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Per Batch Textdatei Spaltenweise auslesen nochmal weil ich dumm bin (9)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
Batch Textdatei Spaltenweise auslesen (7)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...