Mit welchen cmd Befehl kann ich meinen PC auf Standby setzen?

2 Antworten

für den Ruhezustand :

shutdown /h

oder

rundll32.exe powrprof.dll,SetSuspendState

Standby gestaltet sich etwas schwieriger:

Als pure Batch:

Standby.cmd (muss als Administrator ausgeführt werden)

  rem von Ruhezustand auf Standby umschalten
powercfg /hibernate off
rundll32.exe powrprof.dll,SetSuspendState

  rem das folgende wird erst nach dem Aufwachen ausgeführt
  rem nach dem aufwachen ruhezustand wieder einschalten
powercfg /hibernate on

Eleganter arbeitet ein Powershell-einzeiler:

standby.cmd (kein Admin nötig)

powershell.exe -C "$code='[DllImport(\"Powrprof.dll\",SetLastError=true)]static extern bool SetSuspendState(bool hibernate,bool forceCritical,bool disableWakeEvent);public static void PCSleep(){SetSuspendState(false,false,false); }';add-type -name Import -member $code -namespace Dll; [Dll.Import]::PCSleep();"

...eigentlich ist das der Übertrick... Ein C# Programm verpackt in ein PowershellSript, welches wiederum in einen einzeiligen Batchbefehl verpackt wurde.

Diese Zeile ist leider zu lang für den Aufruf über WIN+R. Entweder man gibt direkt in ein Consolfenster ein, oder (was angesichts des Umfangs der Zeile die bessere Lösung ist) als Batchdatei.

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

Rowal  29.09.2023, 17:53

das ist genial und funktioniert auch.

1
Erzesel  25.02.2020, 21:40

Ich eben lange Weile...

Hier eine Kleine Batch mit Auswahl und automatischer DefaultOption.

@echo off
 rem Zeit, nach welcher die Defaultoption ausgeführt wird
set "defaultTimer=5"
set "defaultOption=R"
echo [R]uhezustand  [S]tandby
echo [A]bbruch
choice /c RSA /t %defaultTimer% /d %defaultOption%
if %Errorlevel% equ 1 (set "State=1")
if %Errorlevel% equ 2 (set "State=0")
 rem bei Abbruch Batch beenden...
if %Errorlevel% equ 3 (exit /b)

powershell.exe -C "$code='[DllImport(\"Powrprof.dll\",SetLastError=true)]static extern bool SetSuspendState(int State,bool forceCritical,bool disableWakeEvent);public static void PCSleep(){SetSuspendState(%State%,false,false); }';add-type -name Import -member $code -namespace Dll; [Dll.Import]::PCSleep();"
0
rundll32.exe powrprof.dll,SetSuspendState

Eingeben.

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting