Per batch Arbeitsspeicher in der Systeminfo auslesen
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 10.03.2011 um 08:52:18 Uhr
Beitragsart geändert von "Anleitung" auf "Frage".
Content-ID: 162355
Url: https://administrator.de/contentid/162355
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
17 Kommentare
Neuester Kommentar
Moin MeisterPetz,
als erster wäre es nett, wenn Du die 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]
Ich bin mir nicht sicher, ob die Anführungszeichen richtig sind. Ich denke eher so:
[/edit]
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
Markus
als erster wäre es nett, wenn Du die 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]
if %WertOhnePunkt% geq "500" goto :as
Ich bin mir nicht sicher, ob die Anführungszeichen richtig sind. Ich denke eher so:
if %WertOhnePunkt% geq 500 goto :as
call systeminfo | findstr /C:"Gesamter physikalischer Speicher" > mem.txt
for /f "tokens=4" %%i in (mem.txt) do set bla=%%i
for /f "tokens=1-4 delims=." %%a in ("%bla%") do Set WertOhnePunkt=%%a%%b%%c%%d
if %WertOhnePunkt% geq "500" goto :as
if %WertOhnePunkt% geq "1000" goto :ok
:ok
regedit /s ramdisk.reg
Ziel ist es die ramdisk größe der Arbeitspeichergröße anzupassen
:as
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
call systeminfo >Systeminfo.txt
type systeminfo.txt | findstr /C:"Systemgebietsschema" > Systeminfo_Sprache.txt
for /f "tokens=4" %%i in (Systeminfo_Sprache.txt) do set Sprache=%%i
If /i "%Sprache% == "de" Set Speicherfrage="Gesamter physikalischer Speicher"
If /i "%Sprache% == "en" Set Speicherfrage="guckst Du Duden"
type systeminfo.txt | findstr /C:"%Speicherfrage%" >mem.txt
.
.
.
Markus
@BigWim
Nur als Annmerkung: Das Zwischenspeichern in einer Datei sollte nicht nötig sein - zB
und
ließe sich vielleicht etwas eleganter durch
erledigen ...
Grüße
bastla
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"
for /f "tokens=1-4 delims=." %%a in ("%bla%") do Set WertOhnePunkt=%%a%%b%%c%%d
set "Set WertOhnePunkt=%bla:.=%"
Grüße
bastla
@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.
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.
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL")
For Each objItem In colItems
WScript.Echo objItem.TotalVisibleMemorySize
Next
@bastla
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:
"Set" und ich werden wohl keine Freunde mehr. Ich hatte das dunkel in Erinnerung, aber nicht mehr gefunden ...
Markus
Nur als Annmerkung ....
Wie sehr ich diese Worte doch mag. Denn jetzt wirds spannend ....for /f "tokens=4" %%i in ('systeminfo^|findstr /C:"Gesamter physikalischer Speicher"') do set "bla=%%i"
>
Und Danke für diesen Tipp:
set "Set WertOhnePunkt=%bla:.=%"
>
Markus
@AndreasHoster
Grüße
bastla
ich würde es gleich im WSH skripten
Auch in dieser Hinsicht bin ich durchaus bei Dir ... Grüße
bastla
Hallo BigWim!
Noch ein Nachtrag: "
Grüße
bastla
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:set "Info=%temp%\SysInfo.txt"
sysinfo>"%Info%"
for /f "tokens=4" %%i in ('findstr /C:"Gesamter physikalischer Speicher" "%Info%"') do set "bla=%%i"
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
Hallo Bastla,
Viele Grüße
Markus
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: "
von Programmen (dafür gibt es allenfalls "
Nochmals Danke. Eigentlich klar, aber in diesem Fall ohne Überlegung aus dem Verfasserscript genommen. Gelobe Besserung ....call
" wird nur zum Aufruf eines Batch-Unterprogrammes benötigt, nicht für den Startvon Programmen (dafür gibt es allenfalls "
start
") ...Viele Grüße
Markus
@bastla,
Markus
Wieso das denn?
Mich ärgert das, wenn ich Dinge vor Augen habe und doch nicht sehe ...Markus