Come posso mettere il computer in modalità sospensione dal menu Prompt dei comandi / Esegui?


144

So che quasi tutto su Windows, come l'apertura di qualsiasi tipo di applicazione, può essere eseguito dal prompt dei comandi o dal menu Esegui .

Come posso mettere il mio computer in standby o spegnerlo ? Qual è il comando per quello?


Digita shutdown al prompt dei comandi e dai un'occhiata all'output funziona su XP e versioni successive da quello che posso dire.
user10547

Risposte:


128

Scoprirai shutdown.exedi essere tuo amico.

Altri comandi utili vedono questo post:

Sleep Computer (leggi di più su https://superuser.com/a/463652/249349 )

Lock Workstation

Hibernate Computer

see answers by Scott Chamberlain and Eric L

Riavvia il computer

Shutdown.exe -r -t 00

Spegnere il computer

Shutdown.exe -s -t 00

EDIT / UPDATE:

Sembra che dormire su un computer sia problematico se l'ibernazione è attiva.

Copia da altre risposte:

Puoi provare PsShutdown o:

Il comando rundll32.exe powrprof.dll, SetSuspendState 0,1,0 per la sospensione è corretto, tuttavia andrà in letargo invece della sospensione se non si disattiva la modalità di sospensione.

Ecco come farlo:

Vai al menu Start e apri un prompt dei comandi con privilegi digitando cmd.exe, facendo clic con il pulsante destro del mouse e scegliendo Esegui come amministratore. Digita il seguente comando:

powercfg -hibernate off

21
Il problema rundll32.exe powrprof.dll,SetSuspendState 0,1,0è che NON FUNZIONA come dovrebbe. SetSuspendStatemetterà il computer in una sorta di modalità ibrida di sospensione / ibernazione. Quando si utilizza il pulsante Sospensione dal menu Start, è possibile ripristinare la sospensione del computer premendo un tasto qualsiasi sulla tastiera. Utilizzando questa riga di comando, make viene ripristinato molto più lentamente a causa dello stato di sospensione più profondo e può riprendere solo se si preme il pulsante di accensione sul computer. Non può riprendere per la pressione di un tasto. Quindi ... come si fa a dormire come in standby normale - ripristinabile con la pressione di un tasto?
Corporate Geek,

6
I downgrade non sono affatto ingiustificati. La tua risposta non affronta la domanda da sola. I lettori dovrebbero essere in grado di raccogliere abbastanza informazioni utili da una risposta per risolvere il problema , senza dover seguire eventuali link ad altri siti che possono diventare rotto o morto.
Iszi,

5
Sottovalutato per non aver risposto alla domanda posta: anche nella pagina collegata, il metodo descritto per mettere in pausa la macchina non funzionerà quando l'ibernazione è abilitata.
Akurtser,

4
Ho testato anche il comando Sleep e posso anche confermare che non funziona come previsto. Non ha nulla a che fare con l'odiare / la pesca a traina, ma se quel comando non funziona, allora la domanda è senza risposta, poiché quella era la parte principale della domanda.
REVISIONATO il

6
rundll32non dovrebbe essere usato per chiamare SetSuspendStateperché la sua firma non corrisponde a quella prevista da rundll32. Vedere: support.microsoft.com/en-us/kb/164787 e msdn.microsoft.com/en-us/library/windows/desktop/… Il primo parametro ottiene spazzatura invece del valore FALSE. È la ragione, perché va in letargo invece di andare a dormire.
SergeyT

86

I metodi pubblicati da altre persone non funzionano correttamente se un computer ha il letargo abilitato, il computer non si riattiverà sulla tastiera o, cosa più importante, non si riattiverà sulle attività pianificate.

Uno degli strumenti di Microsoft Sysinternals è PsShutdown che utilizza il comando psshutdown -d -t 0per dormire correttamente, non in letargo , un computer


Richiede elevazione all'amministratore
dsmtoday,

3
Funziona per me in Windows 10 x64, Build 1709.
Hans Løken,

1
Funziona per me in Win10x64 versione 1709, esegui cmd con account utente amministratore ma senza run as administratoropzione clic destro
Viktor Carlson

3
Funziona per me con Windows 10 (nemmeno come amministratore).
DAB,

3
Funziona con Windows 10 x64 Build 15063. È necessario scaricare PsTools e copiarlo psshutdown.exedall'archivio ad es. C:\Windows\System32Per poter usare il comando senza pathprefix. È quindi necessario eseguire psshutdown -d -t 0con privilegi di amministratore per sospendere. Questa dovrebbe essere la risposta accettata , perché risponde alla domanda, anche se non con strumenti preinstallati da Windows.
Arch Linux Tux,

19

Il comando rundll32.exe powrprof.dll,SetSuspendState 0,1,0per il sonno è corretto, tuttavia andrà in letargo invece del sonno se non si disattiva il letargo.

Ecco come farlo:

Vai al menu Start e apri un prompt dei comandi con privilegi digitando cmd.exe, facendo clic con il pulsante destro del mouse e selezionando Esegui come amministratore . Digita il seguente comando:

powercfg -hibernate off

5
Penso che sia la prima risposta a risolverlo. Ho messo queste due linee (prima ho escluso) e ho creato un file batch che mette il pc in sospensione. Un problema è che in sostanza disattiva l'ibernazione, che non è quello che volevo, quindi per risolverlo, ho aggiunto un'attività pianificata attivata su "allo sblocco della workstation" per riattivare l'ibernazione con un batch la cui unica riga è " powercfg -hibernate off ". Quindi ho configurato un tasto di scelta rapida per il primo file batch. Fatto. Funziona come un incantesimo, grazie!
Akurtser,

È così strano. L'ibernazione deve essere disattivata prima di poter dormire correttamente? Esiste un nome per lo stato di sospensione / sospensione ibrido powrprof.dllquando la modalità di sospensione è attiva? Voglio solo sapere. Si riferisce a uno qualsiasi degli stati ACPI?
Ehtesh Choudhury,

4
rundll32non dovrebbe essere usato per chiamare SetSuspendStateperché la sua firma non corrisponde a quella prevista da rundll32. Vedere: support.microsoft.com/en-us/kb/164787 e msdn.microsoft.com/en-us/library/windows/desktop/… Il primo parametro ottiene spazzatura anziché FALSE. È la ragione, perché va in letargo invece di andare a dormire.
SergeyT

Non funziona su Windows 10
T3rm1

@EhteshChoudhury, il problema in questo caso è che i parametri Rundll32 sono errati e completamente inadatti, quindi chiamano SetSuspendState con i parametri: Hibernate: TRUE, ForceCritical: TRUE, DisableWakeEvents: TRUE. L'ultimo bit spiega perché non è possibile riattivare il PC con nient'altro che il pulsante di accensione. È solo una coincidenza che il tentativo di andare in letargo quando è disabilitato metterà il PC in sospensione in Win7, e probabilmente perché non funziona per alcune persone.
SilverbackNet

10

NirCmd funziona su Windows 8 (suppongo che funzioni anche con Windows 7) → http://www.nirsoft.net/utils/nircmd.html
Il comando è standby, ma mette il computer in sospensione.

nircmd.exe standby

Se è abilitata la sospensione ibrida, funzionerà; vale a dire, mette il computer in modalità di sospensione e copia la memoria su disco in caso di interruzione dell'alimentazione.


1
Funziona senza dover elevare a amministratore. Funziona con o senza ibernazione abilitato. Funziona come previsto con il sonno ibrido. Bella soluzione per Win10.
sabato

3

Guarda l'utilità gratuita di Wizmo , che può fare moltissime cose.
Il comando che stai cercando è probabilmente:

wizmo standby


1
Wizmo ha lo stesso problema di rundll32.exe powrprof.dll,SetSuspendState 0,1,0- mette il computer in letargo, non in sospensione
Andomar

2
No, poiché Vista mette effettivamente il computer in modalità sospensione ibrida . Se non lo desideri, disattiva la sospensione ibrida .
harrymc,

1
wizmo blackout ha funzionato in Windows 8.1, 10. GRANDE !!!!!!!!!!!!!
YumYumYum

Wizmo funziona alla grande. Sfortunatamente il mio scanner antivirus aziendale lo elimina poiché contiene alcune sequenze che fanno pensare a mcafee che contenga un trojan .
Bastian,

@bastian: Mcafee è sempre stata una brutta notizia per uno scrittore di applicazioni (per esperienza personale).
harrymc,

3

Ho creato una scorciatoia per rundll32.exe powrprof.dll,SetSuspendState 0,1,0(anche provato con 0,0,0), ma l'esecuzione della scorciatoia sembrava mettere il mio PC in letargo. Non è stato possibile riattivare il PC utilizzando la tastiera; Ho dovuto premere il pulsante di accensione e il PC ha mostrato i messaggi di posta sulla scheda madre, ecc.

Dopo aver letto il documento API di Windows , ho creato un programma molto semplice con solo 3 righe di digitazione. Ho caricato l'eseguibile che ho compilato in questa pagina (fare clic su "SleepTest.exe") , ma questo file potrebbe essere eliminato dopo un po '(questo è un sito di hosting di file gratuito che ho appena trovato da una rapida ricerca su Google).

Se non ti fidi di me (il che è totalmente soddisfacente) o il file è stato eliminato, puoi compilare il codice da solo, ovviamente. Devi aggiungere "PowrProf.lib" alle dipendenze aggiuntive del Linker.

#include "stdafx.h"
#include "windows.h" <-- Added this to make it work on Windows.
#include "PowrProf.h" <-- Added this to use the sleep function.

int main()
{
    SetSuspendState(FALSE, FALSE, FALSE); <-- Added this actual call.
    return 0;
}

rundll32.exe powrprof.dll,SetSuspendState 0,1,0sembra che stia facendo la stessa cosa, ma in qualche modo, il programma sopra non ha messo in letargo il computer. Potrei svegliare il PC all'istante (nessun messaggio sulla scheda madre, ecc.) Premendo qualsiasi tasto sulla tastiera.


2

È possibile avviare le opzioni di sospensione o ibernazione dalla riga di comando come specificato di seguito e indicato in questo articolo .

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

Se il computer è impostato per consentire l'ibernazione, il comando precedente avvierà l'ibernazione. Se la funzione di ibernazione è disabilitata, entrerà nello stato di standby. Come altri utenti hanno già risposto in precedenza, shutdown.exe /?forniranno molte opzioni di spegnimento.


1
rundll32non dovrebbe essere usato per chiamare SetSuspendStateperché la sua firma non corrisponde a quella prevista da rundll32. Vedi: support.microsoft.com/en-us/kb/164787 e msdn.microsoft.com/en-us/library/windows/desktop/… Il primo parametro ottiene spazzatura invece di FALSE, quindi va sempre in letargo invece di andare a dormire.
SergeyT

1

È necessario prima disattivare sospensione in Windows e poi mettere il computer in sospensione dello stato. Utilizzare i seguenti due comandi:

powercfg -hibernate off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0

e per eseguire l'azione inversa, Ibernazione del computer, utilizzare i comandi seguenti:

powercfg -hibernate on
rundll32.exe powrprof.dll,SetSuspendState Hibernate

3
rundll32non è destinato alla chiamata SetSuspendStatee non deve essere utilizzato per questo. Il primo parametro ottiene immondizia anziché valore corretto. Quindi va sempre in letargo invece di andare a dormire (se non hai disabilitato il letargo).
SergeyT

@SergeyT Sembra funzionare per me (dopo aver disabilitato l'ibernazione); stai dicendo che questo corromperà Windows?
Moondra,

Corrompe lo stack (poiché rundll32 prevede una diversa firma della chiamata, quindi estrae dallo stack elementi che non sono stati effettivamente inseriti). Questo porta a comportamenti imprevisti.
imoatama,

@imoatama nice found ...
masterxilo

1

Ecco un articolo sull'uso della CLI per l'arresto.

Microsoft fornisce PsTools che ti consente di chiudere la CLI insieme ad altri strumenti utili. Puoi ottenerlo qui .


1

solo QUICK SLEEPER funziona per me (funziona in Windows 7,8,10).

codice sorgente ps disponibile qui .


1
C'è qualche possibilità che tu possa fornire un link al sito reale da cui hai ottenuto il file? Il collegamento diretto al file di download, in particolare quando si utilizza ga URL shortener, può rendere il file particolarmente sospetto in quanto si tratta di una tattica spesso utilizzata dagli autori di malware.
Mokubai

ok, ho aggiornato il link al sito ufficiale.
T.Todua,

1

Se hai Python (con pywin32) disponibile puoi anche chiamare quella funzione SetSuspendState direttamente con:

import ctypes
ctypes.windll.PowrProf.SetSuspendState(0, 1, 0)

Questo può essere facilmente inserito in un file batch o in una sorta di collegamento come:

pythonw -c "import ctypes; ctypes.windll.PowrProf.SetSuspendState(0, 1, 0)"

Quindi, se non hai i tuoi file .py associati all'interprete, puoi semplicemente fare doppio clic sul collegamento.


1

La parte di arresto della domanda è chiara per tutti.
shutdown.exe /?mostra tutte le opzioni di spegnimento / riavvio / avvio opzioni avanzate / avvio firmware.

Ma vedo così tanti colpi di fulmine gettati in giro per la parte del sonno.
Tutti lo ottengono che rundll32.exenon dovrebbe essere usato per chiamare funzioni casuali e funziona solo qui in letargo per coincidenza. Ma questa è la natura di Windows: una scatola nera che la gente ha cercato e trovato centinaia di soluzioni alternative per portare a termine un lavoro (grida ai dosaggi).

Ci sono così tante soluzioni " appropriate " che propongono strumenti esterni , ma non riesco a trovare uno script batch nativo (ibrido / pinvoke / qualunque) , anche se questa domanda è rimasta attiva nel corso degli anni.
Quindi ecco il mio semplice power_sleep.bat :

@echo off &mode 32,2 &color cf &title Power Sleep
set "s1=$m='[DllImport ("Powrprof.dll", SetLastError = true)]"
set "s2=static extern bool SetSuspendState(bool hibernate, bool forceCritical, bool disableWakeEvent);"
set "s3=public static void PowerSleep(){ SetSuspendState(false, false, false); }';"
set "s4=add-type -name Import -member $m -namespace Dll; [Dll.Import]::PowerSleep();"
set "ps_powersleep=%s1%%s2%%s3%%s4%" 
call powershell.exe -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Bypass -Command "%ps_powersleep:"=\"%"
exit

Funziona anche come un grande comando a una riga:

powershell.exe -C "$m='[DllImport(\"Powrprof.dll\",SetLastError=true)]static extern bool SetSuspendState(bool hibernate,bool forceCritical,bool disableWakeEvent);public static void PowerSleep(){SetSuspendState(false,false,false); }';add-type -name Import -member $m -namespace Dll; [Dll.Import]::PowerSleep();"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.