Gibt es eine Möglichkeit, zu verhindern, dass Windows in den Ruhemodus wechselt, während ein Programm in der Befehlszeile oder mit Cygwin ausgeführt wird? Im Idealfall hoffe ich auf etwas, das verwendet werden kann wie:
nosleep myscript.sh
Hintergrund
Manchmal starte ich Jobs mit langer Laufzeit wie eine manuelle Sicherung oder große Dateiübertragungen und habe festgestellt, dass Windows häufig in den Ruhezustand wechselt, bevor diese abgeschlossen sind. Ich möchte in der Lage sein, den Befehl zu starten und den Ruhemodus zu verhindern, während der Befehl ausgeführt wird, aber er soll nach Abschluss des Befehls automatisch wieder funktionieren.
quelle
Hier ist ein Bash-Skript, das ich basierend auf der Antwort von harrymc erstellt habe.
quelle
"$*"
bis$*
. Ansonsten bekam ich folgendes, wenn ich mehr als ein Argument gab (zB$nosleep sleep 1
:/usr/bin/nosleep: line 31: sleep 1 command not found
"$@"
."$*"
ist falsch, weil es alle Argumente verkettet, während$*
es falsch ist, wenn es die Argumente$IFS
aufteilt und die leeren entfernt.Loop { SoundPlay, %A_WinDir%\Media\ding.wav }
ohnewait
Argument.nosleep
In Cygwin gibt es jetzt einen solchen Befehl. Installieren Sie einfach dasnosleep
Paket und führen Sie es aus alsGeschrieben von Andrew E. Schulman im Jahr 2011. Siehe https://cygwin.com/ml/cygwin/2011-09/msg00151.html
Die Quelle auf dem Launchpad . Es verwendet
SetThreadExecutionState()
(wie bereits erwähnte Schlaflosigkeit), erstellt kein separates Stromversorgungsschema.Beachten Sie, dass dadurch verhindert wird, dass das System im Leerlauf automatisch in den Ruhezustand wechselt, und nicht, dass das System auf Anforderung eines Benutzers in den Ruhezustand wechselt (z. B. beim Schließen eines Laptopdeckels).
quelle
Vorschlag aus dieser Antwort von @LorenzCK zu einer verwandten Frage:
Verwenden Sie den Präsentationsmodus im Windows Mobility Center (falls verfügbar).
%WINDIR%\System32\PresentationSettings.exe "/start"
Überprüfen Sie mit
powercfg -requests
in der Eingabeaufforderung. Sollte ausgeben:Der Vorteil ist, dass es beim Herunterfahren oder Neustart gelöscht wird. Jetzt müssen Sie sich nicht mehr um das Speichern und Wiederherstellen der ursprünglichen Energieeinstellungen kümmern 👍
Es verhindert auch, dass Monitore in den Ruhezustand versetzt werden. Sie können dies jedoch mit einem Befehl in Ihrem Skript erreichen. Einfache Lösungen von Drittanbietern : NirCmd
nircmd monitor off
oder AutoHotkeySendMessage, 0x112, 0xF170, 2,, Program Manager
Die integrierte Lösung funktioniertpowercfg /requestsoverride process PresentationSettings.exe display
jedoch nicht.quelle
Schlaflosigkeit verhindert, dass Ihre Fenster in den Ruhezustand versetzt werden, es handelt sich jedoch nicht um ein Befehlszeilentool. Daher ist Ihr Skript mit den harrymc-Befehlen eine bessere Lösung
quelle