Windows Warneinrichtung über Batch bauen für Cpu, GPU und Ram Temp?
Moin ich möchte gerne über Batch im Hintergrund dauerhaft alle 60 Sekunden kontrollieren lassen ob eine Komponente überhitzt.
Die Grenzen würde ich in der Batch Datei manuel eintragen, da ja jedes Teil eine eigene Max Temp hat.
Das Programm soll im Autostart ausgeführt werden. Im Hintergrund. Wenn es was findet soll es:
call HighTemperature machen und in den Vordergrund rücken, wenn etwas überhitzt mit der jeweiligen Temperatur.
Ist das einfach zu bewerkstelligen? Ich hatte ein paar commands schon ausprobiert und laut chatgpt, kommt man an die temps nicht so einfach heran via wmic.
wmic /namespace:\\root\wmi path MsAcpi_ThermalZoneTemperature get Currenttemperature funktioniert zwar,
ich werde aber nicht fündig was ich mir unter diesen thermischen zonen vorstellen kann bzw. wie ich daraus auf eine Überhitzung schließen soll.
Ich nutze windows 10
2 Antworten
Mit "Windows-Bordmitteln", also per Batch ohne Third-Party-Tools, geht das nicht. Ich habe die Erfahrung gemacht, dass man per WMI entweder gar keine oder unsinnige Ergebnisse bekommt.
Ich habe mir dann eine Temperaturwarnung mit CoreTemp gebastelt.
CoreTemp startet eine von mir erstellte Batch, wenn eine Temperaturgrenze erreicht ist.
Hier ist meine "alarm.bat":
@echo off
set starttime=%TIME%
:start
echo Alarm! (%starttime%)^G
timeout /t 10 >nul:
goto start:
---
Hinweis: ^G ist der Bell Character. Windows gibt einen Signalton aus wenn der Bell Character vom Echo-Befehl ausgegeben wird.
Es ist allerdings etwas tricky den Bell Character einzufügen, da man in dem meisten Umgebungen keine Steuerzeichen (Controltaste+Buchstabe) eingeben kann.
Ich würde also in der Eingabeaufforderung ein echo ^G>alarm.bat eingeben und dann mit Notepad in der alarm.bat den obigen Code einfügen (das Steuerzeichen wird in Notepad als leerer Kasten angezeigt).
Achtung: Bei ^G>alarm.bat nicht das ^ Zeichen und dann den Buchstaben G eingeben, sondern Controltaste und G drücken!
Mit Batch geht das erstmal garnicht!
Da wirst Du auch nicht viel erfolgversprechendes finden. Jeder Hardwarehersteller kocht bezüglich der Sensorik sein eigenes Süppchen.
Grafikkartenhersteller haben in ihren Treiberbibliotheken entsprechende Funktionen, auf die man mit systemnahen Programmiersprachen zurgeifen kann.
Bei Mobo und CPU sieht die Sache wesentlich schlechter aus. Selbst wenn der eine oder andere Hersteller überhaupt Treiber bereitstellt bieten die wenigsten Schnittstellen zu evtl verbauten Sensoren. Hinzukommt, dass das WMI bei eingeschalteter Hardwarvirtualisierung nicht mehr auf die Bios-Schnittstellen zugreifen kann.
ausnahmsweise muss ich ChatGPT mal recht geben...😏
Das Deine WMIC-Abfrage überhaupt ein Ergebnis liefert grenzt an ein kleines Wunder. (läuft Dein Rechner etwa ohne Virtualisierung?) Leute welche sich überhaupt noch mit der Temperaturerfassung via WMI beschäftigen, haben ihre Informationen aus ferner Zeit und betreiben ihre Geräte noch immer ohne Virtualisierung.
Der von MsAcpi_ThermalZoneTemperature erfasste Sensor (falls überhaupt vorhanden) kann irgendwo auf den MoBo verbaut sein und erfasst sozusagen die "Umgebungstemperatur". Dieser ist vergleichbar mit einem Küchentermometer ... dem ist es egal ob der Kuchen im Backrohr in Flammen steht.
Programme wie Coretemp müssen schon gewaltig tricksen um sich die Nötigen Daten zu verschaffen. Coretemp schiebt eine Art Kernelmode-Treiber unter das System.