Mit welchem ​​Befehl wird Ihr Computer in den Energiesparmodus versetzt (nicht in den Ruhezustand versetzt)?

63

Ich möchte meinen Windows-PC (Windows 7) über die Befehlszeile in den Ruhezustand versetzen (damit ich mich an die Makrotaste auf der Tastatur binden kann).

Der Einschaltknopf am PC ist so eingestellt, dass der Computer nicht in den Ruhezustand wechselt (aber er liegt auf dem Boden und ich bin zu faul, um nach unten zu greifen).

Der Befehl sleep im Menü shutdown funktioniert ebenfalls.

die meisten Informationen, die ich gefunden habe, sagen zu verwenden;

%windir%\system32\rundll32.exe PowrProf.dll, SetSuspendState 0,1,0

Dadurch wird der Computer jedoch in den Ruhezustand versetzt. Ich habe den Winterschlaf deaktiviert, benutze aber den hybriden Schlaf.

Also, was ist der Befehl, um Ihren Computer in den Ruhezustand zu versetzen (nicht in den Ruhezustand)?

Eric L
quelle
5
rundll32.exe PowrProf.dll,SetSuspendStateist nicht zu empfehlen. Es ist gefährlich. (Da es sich um den Stapel verdirbt, da es sich nicht mit der Funktion Signatur entsprechen gefordert durch Rundll32. Dann unvorhersehbar schlechte Dinge können passieren, wie Raymond Chen warnt ...)
Aaron Thoma

Antworten:

13

Ich habe eine Lösung gefunden. Ich habe ein Freeware-Programm namens AutoHotKey installiert und die Schritte zum Aufrufen von Start Menu -> Sleep in einer Skriptdatei aufgezeichnet. Dann habe ich die Skriptdatei in eine eigenständige ausführbare SleepWin7.exe umgewandelt.

Jetzt führe ich einfach SleepWin7.exe aus, um meinen Computer in den hybriden Ruhezustand zu versetzen.

Sie können AutoHotKey deinstallieren, wenn dies alles ist, wofür Sie es benötigen.


Update: Die obige Lösung funktioniert nicht, wenn der Benutzer nicht angemeldet ist, dh der Windows 7-Anmeldebildschirm. (Mein Computer wacht jeden Sonntag um 4 Uhr morgens auf, um eine wöchentliche Sicherung durchzuführen, die ohne Benutzeranmeldung durchgeführt wird.) In diesem Fall funktioniert das Wizmo- Programm weiterhin:

wizmo.exe leise Standby!

Andy Lee
quelle
3
Hier ist ein AutoHotKey-Skript (mit Tastatur); Senden, {LWINDOWN} {LWINUP} WinWait, Startmenü, IfWinNotActive, Startmenü, WinActivate, Startmenü, WinWaitActive, Startmenü, Senden, {TAB} {UP} {RIGHT} s
Eric L
Dies ist die Lösung, die ich letztendlich verwendet habe. wie es den hybriden Schlaf unterstützt.
Eric L
+1 Das fühlt sich schmutzig an, aber es funktioniert. Ich musste den letzten Send-Teil auf "Send, {RIGHT} {RIGHT} s" ändern. Übrigens hätte ich dir beinahe eine -1 gegeben, weil du empfohlen hast, AHK zu deinstallieren, da dies unverzeihlich wäre :)
demoncodemonkey
Ich habe dies auch zu Beginn des Skripts hinzugefügt, um sicherzustellen, dass die Befehle in das Desktop-Fenster gelangen und nicht verloren gehen: WinActivate, ahk_class Progman
demoncodemonkey
1
Nach dem Wechsel zu Windows 8 verwende ich jetzt NirCmd (sehr leicht) und versetze den Computer in den hybriden Ruhezustand. nircmd.exe standbyWeitere Informationen finden Sie hier -> nirsoft.net/utils/nircmd.html
Eric L
73

Ich hoffe, Sie finden diese nützlich.

Ausschalten %windir%\System32\shutdown.exe -s

Starten Sie neu %windir%\System32\shutdown.exe -r

Ausloggen %windir%\System32\shutdown.exe -l

Bereithalten %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Standby

Überwintern %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Hibernate

Achtung: rundll32.exe sollte nicht zum Starten von powerprof.dll verwendet werden . Stattdessen sollten Sie SetSuspendState direkt aufrufen. Dies kann mit Powershell geschehen. Erstellen Sie eine Datei, z. B. sleep.ps1, mit dem folgenden Inhalt.

Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)

Führen Sie es dann mit powershell -File C:\your-path\sleep.ps1. Möglicherweise müssen Sie zuerst den Befehl Set-ExecutionPolicy RemoteSignedausführen, um die Ausführung von Powershell-Skripten zu ermöglichen.

Das obige Skript führt zu einer Systemunterbrechung, die abhängig von Ihrer aktuellen Ruhezustandseinstellung entweder in den Ruhezustand oder in den Ruhezustand wechselt. Um diese Einstellung über die Befehlszeile zu ändern, führen Sie powercfg -h off(oder on) als Administrator über die Befehlszeile aus.

Imoatama
quelle
4
whoa schön! +1 ...
studiohack
9
Das ist großartig, aber wo ist das für Sleeeeeeeeeeeeep
demoncodemonkey
7
Standby-Verknüpfung versetzte meine Win7-Maschine in den Ruhezustand :(
Benutzer
5
@demoncodemonkey: Standbyyyyyyyyyyyy = Sleeeeeeeeeeeeep :)
Răzvan Flavius ​​Panda
11
Anscheinend nicht: superuser.com/a/331545/21887 Daher wird die Verwendung dieser Methode als gefährlich angesehen und nicht empfohlen. (Es beschädigt den Stapel.)
Aaron Thoma
16

Sehen Sie sich das kostenlose Dienstprogramm von Wizmo an , das sehr viele Dinge kann.
Der gesuchte Befehl lautet wahrscheinlich:

Wizmo Standby

Harrymc
quelle
Wizmo sieht ziemlich cool aus! Ich wünschte fast, ich wäre kein Mac-
Fan
Das Dienstprogramm muss nicht installiert werden. Nettes einfaches Werkzeug.
Artur Carvalho
2
wizmo.exe quiet standbyunterdrückt wohl störende Pieptöne durch wizmo.exe.
Aaron Thoma
14

Sie können eine Datei mit der Erweiterung .ps1 (Powershell) wie "sleep.ps1" erstellen und Folgendes schreiben:

Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)

Ich benutze dies, wenn etwas läuft und ich den PC verlassen muss und ihn nicht ausschalten möchte. Also ändere ich das Skript so:

$minutes = read-host "Enter minutes to wait until sleep";
$secs= 60*$minutes;
Start-sleep -s $secs

Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)

Und jetzt, wenn ich es starte, gebe ich einfach die Minuten ein, die ich warten möchte, bis ich eingeschlafen bin.

Sie können dies von der cmd-Zeile aus ausführen, indem Sie schreiben

powershell -File C:\your-path\sleep.ps1

Wenn Sie noch nie ein PowerShell-Skript ausgeführt haben, sollten Sie es zuerst ausführen

Set-ExecutionPolicy RemoteSigned

in PowerShell, um die Skriptausführung zu aktivieren. Dies muss nur einmal ausgeführt werden.

Artur Carvalho
quelle
Sind die Namen Ihrer Variablen nicht falsch?
Ullallulloo
11

Mit Sysinternals PsTools [ herunterladen ]:

psshutdown -d

Verwenden Sie das Befehlszeilentool PsShutdown .

(Möglicherweise bevorzugen Sie diese Lösung, wenn Sie PsTools bereits heruntergeladen haben. Sie wird häufig verwendet. Ansonsten entspricht dieser Ansatz der Verwendung von .)wizmoquiet standby

Quelle: https://superuser.com/a/331545/21887

Aaron Thoma
quelle
7

Ich benutze dieses SLEEP.EXE- Dienstprogramm seit Jahren. Es funktioniert gut und Sie müssen sich nicht merken, welche Argumente es für den Suspend-Modus gibt (die Standardform von "sleep").

jjlin
quelle
SLEEP.EXE funktioniert für mich unter Windows 7 Pro SP1. Die übergeordnete Seite listet auch viele andere nützliche Befehlszeilentools für Windows auf. Danke, @jjlin!
CODE-REaD
6

Um den Ruhezustand zu deaktivieren, müssen Sie verwenden

powercfg -h off

Jetzt versetzt rundll32 powrprof.dll, SetSuspendState Ihre Station in den Standby-Modus

[BEARBEITEN]

Eigentlich kann ich keinen Hybrid-Schlafmodus einrichten, da ich einen Laptop besitze (ein Status, der auf Mobilstationen nicht verfügbar ist). Für den Hybrid-Schlafmodus muss der Ruhezustand aktiviert sein, und einige sagen, dass rundll32 powrprof.dll und SetSuspendState den Standard-Schlafmodus auslösen Modus in Ihrem Control-Panel \ Power-Management-Einstellungen. Bitte versuchen Sie, ob rundll32 powrprof.dll, SetSuspendState Hybrid Schlaf einige Ergebnisse geben.


quelle
Dies deaktiviert auch Hybrid - Schlaf, so dass er besiegt irgendwie den Zweck
Eric L
rundll32 powrprof.dll, SetSuspendState Hybrid Schlaf versetzen den Computer immer noch in den Ruhezustand. danke für die idee.
Eric L
rundll32 ist nicht zum Aufrufen von SetSuspendState vorgesehen, daher werden falsche Parameterwerte abgerufen. Das ist der Grund, warum es immer zu einem Ruhezustand kommt, wenn Sie es nicht absichtlich deaktiviert haben.
SergeyT
5

Erstellen Sie eine Fledermausdatei, in der 600 Sekunden als Verzögerung angegeben sind.

ping -n 600 -w 1 127.0.0.1> nul

powercfg -h aus

% windir% \ System32 \ rundll32.exe powrprof.dll, SetSuspendState Standby

dim77x
quelle
Gute Möglichkeit, den Computer in den Ruhezustand zu versetzen und ganz einfach jemanden zu schicken, der den Ruhezustand planen möchte.
Maurycy
Kreative Antwort!
Jane Panda
Verwenden Sie nicht rundll32.exe, um SetSuspendState aufzurufen: Es ist nicht dafür vorgesehen. Siehe Erklärungen hier
SergeyT
4

Wenn Sie mit dem Kompilieren eines .NET-Programms vertraut sind, führt der folgende Befehl dies aus

System.Windows.Forms.Application.SetSuspendState(PowerState.Suspend, 
                                                 false,   /* force */
                                                 true     /* disableWake */);

Hinweis: Sie müssen den Ruhezustand nicht deaktivieren, da dies für den rundll32 powrprof.dll,SetSuspendStateBefehl erforderlich ist . Sie können auch verwenden, PowerState.Hibernatewelche die Maschine in den Ruhezustand versetzt, wenn Sie möchten.

Mit diesem Befehl können Sie problemlos eine EXE-Datei mit jeder Version von Visual Studio kompilieren . Erstellen Sie einfach eine Konsolenanwendung und fügen Sie einen Verweis auf die System.Windows.FormsDLL hinzu.

Simon
quelle
1
Wizmo hat dies im Grunde genommen bereits getan - es scheint das Äquivalent zu sein. Und es ist von Steve Gibson geschrieben und kostenlos, also wahrscheinlich besser als das, was ich von Hand bekommen würde, wenn ich dasselbe programmiere!
Stevemidgley
+1. Nach so etwas hier suchen superuser.com/q/310045/84229
Benutzer
Sie müssen nicht einmal Visual Studiozum Kompilieren verwenden. Stattdessen könnte der Befehlszeilencompiler csc.exeverwendet werden. Es ist bereits in allen modernen Windows-Versionen installiert.
SergeyT