44 Stimmen

Windows per Skript in den Ruhezustand oder Energiesparmodus versetzen

Tutorial von Stefan Trost | 24.04.2024 um 17:42

In diesem Tutorial möchten wir uns ansehen, wie wir unseren Windows-Computer über ein Skript beziehungsweise mit der Hilfe eines Kommandozeilen-Befehls wahlweise in den Ruhezustand oder in den Energiesparmodus versetzen können. Wir schauen uns zunächst den allgemeinen Befehl für die Aktivierung beider Zustände an und erweitern diese anschließend um eine optionale Zeitverzögerung.

Im Tutorial über das Herunterfahren eines Windows-Rechners mittels eines Batch-Scripts haben wir uns bereits angesehen, wie wir das Windows-Systemprogramm "shutdown.exe" steuern können, um unseren Windows-Rechner herunter zu fahren oder neu zu starten. Für das Herunterfahren können wir shutdown.exe mit dem Parameter s (englisch für "shutdown") aufrufen, für einen Neustart des Systems können wir stattdessen den Parameter r verwenden, der für das englische Wort "restart" steht.

Ruhezustand

Der äquivalente Parameter für den Ruhezustand ist das "h". Dieser Buchstabe kommt von dem englischen Wort "hibernation", das wörtlich "Winterschlaf" bedeutet und in englischen Windows-Versionen für den Ruhezustand verwendet wird.

Der Aufruf für den Ruhezustand erfolgt analog zu den anderen Beispielen aus dem Tutorial über das Herunterfahren in der folgenden gleichen Art und Weise:

shutdown.exe -h

Mit diesem Befehl versetzen wir unseren Computer in den sofortigen Ruhezustand.

Energiesparmodus

Obwohl shutdown.exe mit jeder Menge unterschiedlicher Parameter gesteuert werden kann und sowohl für das Herunterfahren und Neustarten als auch für den Ruhezustand genutzt werden kann, kennt das Programm keinen Parameter zur Aktivierung des Energiesparmodus. Aus diesem Grund müssen wir für dessen Aktivierung anders vorgehen:

runDLL32.exe powrprof.dll,SetSuspendState Sleep

Das Programm runDLL32.exe ist ein Dienstprogramm von Windows, das dazu genutzt werden kann, Windows-Funktionen, die in einer DLL (Programmbibliothek) definiert sind, auszuführen. Wir nutzen runDLL32 hier, um die Funktion SetSuspendState() aus der DLL powrprof.dll aufzurufen, die unseren Computer sowohl in den Ruhezustand als auch in den Energiesparmodus versetzen kann. Da wir an dieser Stelle nur am Energiesparmodus interessiert sind, übergeben wir der Funktion als weiteren Parameter "Sleep".

"Sleep" wird neben "Hibernate" in englischen Windows-Versionen zur Aktivierung der jeweiligen Zustände "Energie sparen" beziehungsweise "Ruhezustand" verwendet.

Zeitverzögerung

Der Logik folgend läge die Vermutung nahe, dass wir auch "shutdown.exe -h" mit einer Zeitverzögerung versehen können, indem wir, wie wir es von unseren Beispielen bezüglich des Herunterfahrens und des Neustartens kennen, einfach einen t-Wert (time) als weiteren Parameter anhängen.

Dies sieht "shutdown.exe" für die "hibernation" allerdings nicht vor. In allen meinen Tests für dieses Tutorial unter Verwendung verschiedener Windows-Versionen wurden Befehle wie "shutdown.exe -h -t 60" nicht angenommen und lediglich mit einer Fehlermeldung quittiert. Auf denselben Rechnern funktionierten jedoch die gleichen Befehle für das zeitversetzte Herunterfahren ("shutdown.exe -s -t 60") sowie das zeitversetzte Neustarten ("shutdown.exe -r -t 60") nach je einer Minute (60 Sekunden) Verzögerung.

Wenn wir unseren Computer dennoch mit einer Zeitverzögerung in den Ruhezustand schicken möchten, müssen wir uns daher einem Workaround bedienen. Zum Beispiel können wir vor Aufruf des Befehls einen Timeout in unser Skript einbauen. Wie das funktioniert, zeigt unser nächstes Beispiel exemplarisch für einen Timeout von einer Minute (60 Sekunden):

timeout /t 60 /nobreak
shutdown.exe -h

Der Aufruf dieser Zeilen sorgt dafür, dass zunächst für 60 Sekunden heruntergezählt wird und es erst anschließend zu dem Aufruf von shutdown.exe und damit zur Aktivierung des Ruhezustandes kommt. Statt der hier verwendeten 60 Sekunden können wir natürlich auch eine beliebige andere Anzahl von Sekunden für unsere Pause einsetzen.

Ähnlich verhält es sich mit der Aktivierung des Energiesparmodus. Auch die Funktion SetSuspendState() aus der powrprof-DLL kennt keinen Parameter für eine Zeitangabe. Also müssen wir auch in diesem Fall wieder mit einem Timeout arbeiten, der unabhängig von SetSuspendState() ist:

timeout /t 180 /nobreak
runDLL32.exe powrprof.dll,SetSuspendState Sleep

Diese zwei Zeilen versetzen unseren Computer nach einer Pause von 3 Minuten (180 Sekunden) in den Energiesparmodus.

Programme automatisch schließen

Im bereits erwähnten Tutorial über das skriptgesteuerte Herunterfahren oder Neustarten von Windows hatten wir uns auch den Parameter f angesehen, mit dem wir erzwingen können, dass alle laufenden Anwendungen ohne Nachfrage vor dem Herunterfahren beendet werden, ohne Rücksicht darauf, ob in den Programmen noch Dateien mit ungespeicherten Änderungen geöffnet sind.

Dieser Parameter kann auch für ein Schließen der laufenden Programme vor dem Starten des Ruhezustandes verwendet werden. Dafür müssen wir lediglich die Option "f" als weiteren Parameter übergeben:

shutdown.exe -h -f

Mit diesem Befehl schicken wir unseren Computer in den Ruhezustand und schließen vorher alle geöffneten Programme. Noch nicht gespeicherte Änderungen an geöffneten Dateien gehen dabei verloren.

Voraussetzungen

Zuletzt sei angemerkt, dass die in diesem Tutorial gezeigten Befehle nur dann funktionieren, falls der Ruhezustand beziehungsweise der Energiesparmodus auf dem betreffenden Computer aktiviert ist.

Ob dies der Fall ist lässt sich einfach herausfinden, indem man schaut, ob das Menü zum Herunterfahren des Rechners neben "Herunterfahren" und "Neu starten" auch die Optionen "Ruhezustand" beziehungsweise "Energie sparen" bereit hält.

Falls dies nicht der Fall ist, lässt sich der Ruhezustand für gewöhnlich in der Systemsteuerung aktivieren, falls Ihr System den Zustand grundsätzlich unterstützt. Im Falle von virtuellen Maschinen ist dies zum Beispiel in der Regel nicht möglich.

Wie die Aktivierung funktioniert, habe ich im Tutorial über das Verfügbarmachen des Windows-Ruhezustand-Modus Schritt für Schritt für Sie zusammengefasst. Der Energiesparmodus lässt sich auf gleiche Weise verfügbar machen.

Alternative Aufrufweise

Das Programm runDLL32.exe befindet sich auf aktuellen Windows-Versionen genauso wie shutdown.exe im Ordner "system32" der Windows-Installation. Im Falle einer Standard-Windows-Installation ist dies der Ordner "C:\Windows\System32". Wir können beide Programme also genauso auch über diesen vollen Pfad aufrufen beziehungsweise über dessen Systemvariable %SYSTEMROOT% in der Form "%SYSTEMROOT%\System32".

Gleichzeitig können wir die Parameter von shutdown.exe auch über einen Schrägstrich (Slash) statt über den hier gezeigten Bindestrich definieren. Also "shutdown /h" statt "shutdown -h".

Beispiele für diese alternative Aufrufweise finden Sie im Tutorial über das Herunterfahren von Windows. In diesem Tutorial finden Sie darüber hinaus auch andere tiefergehende Erklärungen sowie weitere Parameter für shutdown.exe.

AntwortenPositivNegativ

Über den Autor

AvatarSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen

 

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.