Wie kann ich meinen RAM mit einer Batchfile auslesen?

2 Antworten

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting
AllesKaese3 
Fragesteller
 14.05.2020, 12:27

Ok. Den Befehl hab ich schon ausprobiert. Wie kann ich das denn jetzt in die Beispielvariable reinschreiben?

0
AllesKaese3 
Fragesteller
 14.05.2020, 12:38
@Dultus, UserMod Light

Wie kann ich dann %var% auslesen? hab es gerade mit echo probiert; und es hat mir %var% angezeigt. Was mache ich falsch? Ich habe beide Befehle ausgeführt.

0
AllesKaese3 
Fragesteller
 14.05.2020, 12:41
@AllesKaese3

Ich weiß zwar das ich 8 gb RAM habe, aber wenn man Rechner neu installiert weiß man das ja ohne Win + pause oder win+ x ->System ja nicht. Ich will alles an einem Platz haben.

0
AllesKaese3 
Fragesteller
 14.05.2020, 12:35
Hier der gesamte Quelltext

Ich wollte ein Programm programmieren, mit dem man Nachdem man Windows installiert hat, direkt standartprogramme installieren und sich die Systeminfos Anzeigen lassen kann. (Ganz unten unter esi.)



set Customer=ebay
@echo off
@title Instalation Assistant for %Customer%
mode 9
%TotalVisibleMemory% / 1000000 = RAMGB




:main
cls
echo Welcome to the installation assistant for %Customer%
echo What do you want to install?
echo.
echo.
echo [c] = Google Chrome
echo [r] = Adobe Reader
echo [e] = Chrome, Reader
echo [f] = Mozilla Firefox
echo.
echo.
echo ............................Other options............................
echo.


echo [s] = Settings
echo [X] = Exit
echo [info] = Info


echo.
echo.
echo Your choice:


set/p Klick=


if %Klick%==c goto c
if %Klick%==r goto r
if %Klick%==e goto e
if %Klick%==s goto xyz
if %Klick%==X goto exit
if %Klick%==reload goto reload
if %Klick%==re goto reload
if %Klick%==info goto info
goto errtype1




:errtype1
cls
echo OOOOOPS! Unfortunately, we couldn't proceed your choice.
echo.
echo err-code: 1 (Undefined Key)
pause 
goto main






:c
cls


start /max https://dl.google.com/tag/s/appguid%3D%7B8A69D345-D564-463C-AFF1-A69D9E530F96%7D%26iid%3D%7B6CE3B2C5-8E12-32C6-E1F3-358DD28F9689%7D%26lang%3Den%26browser%3D4%26usagestats%3D1%26appname%3DGoogle%2520Chrome%26needsadmin%3Dprefers%26ap%3Dx64-stable-statsdef_1%26installdataindex%3Dempty/update2/installers/ChromeSetup.exe
echo downloading Google Chrome...
timeout /T 4
cls
echo done downloading.
pause
goto Main


:r
cls
start /max https://admdownload.adobe.com/bin/live/readerdc_de_a_install.exe
echo downloading Adobe Reader...
timeout /T 4
cls
if EXIST readerdc_de_a_install.exe echo done downloading.
pause
goto Main


:e
cls
start https://dl.google.com/tag/s/appguid%3D%7B8A69D345-D564-463C-AFF1-A69D9E530F96%7D%26iid%3D%7B6CE3B2C5-8E12-32C6-E1F3-358DD28F9689%7D%26lang%3Den%26browser%3D4%26usagestats%3D1%26appname%3DGoogle%2520Chrome%26needsadmin%3Dprefers%26ap%3Dx64-stable-statsdef_1%26installdataindex%3Dempty/update2/installers/ChromeSetup.exe
echo downloading..
timeout /T 4
echo done downloading
echo.
echo If you Want to download Adobe Reader, press any key.
pause
goto ee


:ee
cls
start https://admdownload.adobe.com/bin/live/readerdc_de_a_install.exe
echo downloading Adobe Reader...
timeout /T 4
cls
pause
goto main


:xyz
echo Settings:






  
:reload
cls
start %USERPROFILE%\Desktop\Installationsassistent.bat
reloading...
timeout /T 3
goto exit


:exit
exit




: info


cls
echo Info:
echo. 
echo v2.1
echo [ESI] = Extended Systeminfo




set/p Klick2=


if %Klick2%==ESI goto esi
pause
goto main


:esi
cls
echo Extended Systeminfo
echo Username: %USERNAME%
echo OS: %OS%
echo Number of Processors: %NUMBER_OF_PROCESSORS%
echo RAM: %RAMGB% GB (%TotalVisibleMemory% KB)
echo Homedrive: %HOMEDRIVE%


echo []
echo.
pause
goto main


0
Dultus, UserMod Light   14.05.2020, 12:40
@AllesKaese3

Solltest du lediglich über %var% ohne echo ausgeben können.

Warum eigentlich über CMD? Wäre doch mit PowerShell viel einfacher und produktiver?

0
Dultus, UserMod Light   14.05.2020, 12:55
@AllesKaese3

Es ist wesentlich einfacher zu lernen und umzusetzen.

Du kannst einfach den Output Pipen und ausgeben und einfach in eine Variable legen.

Beispiel:

$pattern = '[^0-9]'
[string] $var = ((wmic ComputerSystem get TotalPhysicalMemory) -replace $pattern)
[double] $var = $var

Ausgabe von $var = 14962454528

In Batch benötigst du riesige Codezeilen für sehr simple Dinge.

1
AllesKaese3 
Fragesteller
 14.05.2020, 12:59
@Dultus, UserMod Light

Ok. Es funktioniert. Aber funktioniert es auch unter CMD? wenn nicht, dann müsste ich doch das Programm komplett neu schreiben, oder?

0
Dultus, UserMod Light   14.05.2020, 13:02
@AllesKaese3

Richtig, müsstest du. Ist aber nicht zu viel Arbeit und angenehmer im Nachhinein. Einige Befehle kann PowerShell von CMD übernehmen und ausführen.

0
Dultus, UserMod Light   14.05.2020, 13:06
@AllesKaese3

Siehe mein Profil. :-)

Ich helfe gerne dabei, wenn gewünscht. Hierbei hast du eine OOP - also Objektorientierte Programmiersprache.

Einige Sachen dazu muss man lernen, helfe aber gerne dabei. Am liebsten über Try und Fail.

Du fragst, was du haben willst, ich erkläre es dir und du setzt es um - (Textuell über Discord zum Beispiel.)

Ansonsten gibt es Tutorials verstreut im Netz. Auch über LinkedIn.

0
AllesKaese3 
Fragesteller
 14.05.2020, 13:29
@Dultus, UserMod Light

Den hier in die Powershell:

$pattern = '[^0-9]'
[string] $var = ((wmic ComputerSystem get TotalPhysicalMemory) -replace $pattern)
[double] $var = $var
0
Dultus, UserMod Light   14.05.2020, 13:38
@AllesKaese3

Du müsstest es nicht mal als Variable speichern. Einfach

wmic ComputerSystem get TotalPhysicalMemory

eingeben. Das reicht und wirft das gewünschte Ergebnis aus.

0
Dultus, UserMod Light   14.05.2020, 13:39
@AllesKaese3

Discord hast du schon mal genutzt?
Du musst mich bei Discord einfach über meinen Nick als Freund hinzufügen, dann nehme ich an und wir können chatten.

0
AllesKaese3 
Fragesteller
 14.05.2020, 13:44
@Dultus, UserMod Light

Hab ich schon probiert. Das hört sich jetzt vielleicht banal an, aber bei den anderen Infos gibt es, im gegensatz zu dem Befehl, kein Zeilenumbruch. ich würde es gerne Einheitlich machen. Und Außerdem ist es so unübersichtlicher. Deshalb ja auch mit der Variable.

0
Dultus, UserMod Light   14.05.2020, 13:47
@AllesKaese3

Nein. Dafür ist CMD nicht ausgelegt. Bzw, es geht soweit in eine wirklich verwirrende Tiefe in einem Workaround, bei der ich dir nicht helfen kann.

0
AllesKaese3 
Fragesteller
 14.05.2020, 13:55
@Dultus, UserMod Light

Ich habe es jetzt eingeschoben. funktioniert. Ich hätte noch eine Frage: Wie kann ich die Windows Edition herausfinden (home, enterprise, pro, usw)?

0
Dultus, UserMod Light   14.05.2020, 14:14
@AllesKaese3

Dafür müsstest du das Objekt des wmic des RAMs auslesen und teilen. Funktioniert aber nicht, da du dann wieder separieren musst und WMIC in Byte ausgibt.

0
@echo off
for /f "tokens=*" %%a in ('wmic os get FreePhysicalMemory^,FreeVirtualMemory^,TotalVirtualMemorySize^,TotalVisibleMemorySize /value ^|find "="') do (
  set /a "__%%a"
)
  rem (kann weg) erzeugte Varablen anzeigen: 
echo gesetzte Variablen:
set "__"
echo:


echo Gesamt Physikalischer Speicher : %__TotalVisibleMemorySize% kByte
echo Freier Physikalischer Speicher : %__FreePhysicalMemory% kByte
echo Gesamt virtueller Speicher     : %__TotalVirtualMemorySize% kByte
echo Freier virtueller Speicher     : %__FreeVirtualMemory% kByte


pause
Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren