Como colocar o computador no modo de suspensão no menu Prompt de Comando / Executar?

144

Eu sei que quase tudo no Windows, como abrir qualquer tipo de aplicativo, pode ser feito no prompt de comando ou no menu Executar .

Como posso colocar meu computador em suspensão ou desligá-lo ? Qual é o comando para isso?

lazer
fonte
Digite shutdown no prompt de comando e dê uma olhada no resultado da saída no XP e acima, pelo que posso dizer.
User10547
Relacionados: superuser.com/questions/39584/...
Nayuki

Respostas:

128

Você encontrará shutdown.exeser seu amigo.

Outros comandos úteis veja este post:

Computador em suspensão (leia mais em https://superuser.com/a/463652/249349 )

Bloquear estação de trabalho

Computador de hibernação

see answers by Scott Chamberlain and Eric L

Reinicialização do computador

Shutdown.exe -r -t 00

Desligar o computador

Shutdown.exe -s -t 00

EDIT / UPDATE:

Parece que dormir um computador é problemático se o hibernar estiver ativado.

Copiando de outras respostas:

Você pode tentar PsShutdown ou:

O comando rundll32.exe powrprof.dll, SetSuspendState 0,1,0 para suspensão está correto - no entanto, ele hibernará em vez de suspensão se você não desativar a hibernação.

Veja como fazer isso:

Vá para o Menu Iniciar e abra um prompt de comando elevado, digitando cmd.exe, clicando com o botão direito do mouse e escolhendo Executar como administrador. Digite o seguinte comando:

powercfg -hibernate off
brandstaetter
fonte
21
O problema rundll32.exe powrprof.dll,SetSuspendState 0,1,0é que NÃO FUNCIONA como deveria. SetSuspendStatecolocará o computador em uma espécie de modo de suspensão / hibernação híbrida. Ao usar o botão Suspender no menu Iniciar, você pode retomar o computador do modo de suspensão pressionando qualquer tecla do teclado. Usando essa linha de comando, make é retomado muito mais devagar devido ao estado de sono mais profundo e só pode ser retomado se você pressionar o botão liga / desliga no computador. Não pode continuar com o pressionamento de tecla. Então ... como você faz com que ela durma como no modo de espera normal - recuperável com o pressionar de uma tecla?
Corporate Geek
6
Os votos negativos não são de todo injustificados. Sua resposta não aborda a questão por si só. Os leitores devem ser capazes de reunir informações úteis suficientes de uma resposta para resolver o problema sem precisar seguir os links para outros sites que podem ficar danificados ou mortos.
Iszi
5
Votado por não responder à pergunta: mesmo na página vinculada, o método descrito para colocar a máquina em suspensão não funcionará quando a hibernação estiver ativada.
precisa saber é o seguinte
4
Também testei o comando Suspender e também posso confirmar que ele não funciona conforme o esperado. Não tem nada a ver com odiar / trollar, mas se esse comando não funcionar, a pergunta não será respondida, pois essa foi a parte principal da pergunta.
usar o seguinte código
6
rundll32não deve ser usado para chamar SetSuspendStateporque sua assinatura não corresponde à esperada por rundll32. Consulte: support.microsoft.com/en-us/kb/164787 e msdn.microsoft.com/en-us/library/windows/desktop/… O primeiro parâmetro obtém lixo em vez do valor FALSE. É a razão pela qual hiberna em vez de dormir.
Sergeyt
86

Os métodos publicados por outras pessoas não funcionam corretamente se o computador tiver a hibernação ativada, o computador não será ativado no teclado ou, mais importante, não será ativado na tarefa agendada.

Uma das ferramentas Sysinternals da Microsoft é o PsShutdown, usando o comando psshutdown -d -t 0que irá dormir corretamente, e não hibernar , um computador

Scott Chamberlain
fonte
Requer elevação ao administrador
dsmtoday
3
Funciona para mim no Windows 10 x64, Construir 1709.
Hans Løken
11
Funciona para mim na versão 1709 do Win10x64, execute o cmd com a conta de usuário administrador, mas sem a run as administratoropção de clicar com o botão direito do mouse
Viktor Carlson
3
Funciona para mim com o Windows 10 (nem mesmo como administrador).
DAB
3
Funciona no Windows 10 x64 Build 15063. É necessário fazer o download do PsTools e copiar psshutdown.exedo arquivo para, por exemplo C:\Windows\System32, para poder usar o comando sem pathprefix. É preciso executar psshutdown -d -t 0com privilégios de administrador para suspender. Essa deve ser a resposta aceita , pois responde à pergunta, mesmo que não seja com as ferramentas pré-instaladas no Windows.
Arch Linux Tux
19

O comando rundll32.exe powrprof.dll,SetSuspendState 0,1,0para suspensão está correto - no entanto, ele hibernará em vez de suspensão se você não desativar a hibernação.

Veja como fazer isso:

Vá para o Menu Iniciar e abra um prompt de comando elevado cmd.exe, digitando , clicando com o botão direito do mouse e escolhendo Executar como administrador . Digite o seguinte comando:

powercfg -hibernate off
Gaff
fonte
5
Eu acho que é a primeira resposta que realmente resolve. Coloquei essas duas linhas (desative primeiro) e criei um arquivo em lotes que coloca o computador no modo de suspensão. Um problema disso é que ele basicamente desativa a hibernação, o que não era o que eu queria, então, para corrigi-lo, adicionei uma tarefa agendada acionada em "no desbloqueio da estação de trabalho" para reativar a hibernação com um lote cuja única linha é " powercfg - desativado ". Em seguida, configurei uma tecla de atalho para o primeiro arquivo em lotes. Feito. Funciona como um encanto, obrigado!
akurtser
Isso é tão estranho. A hibernação precisa ser desativada antes que você possa dormir corretamente? Existe um nome para o estado híbrido de suspensão / suspensão powrprof.dllquando o hibernar está ativado? Só quero saber. Está relacionado a algum dos estados da ACPI?
Ehtesh Choudhury
4
rundll32não deve ser usado para chamar SetSuspendStateporque sua assinatura não corresponde à esperada por rundll32. Consulte: support.microsoft.com/en-us/kb/164787 e msdn.microsoft.com/en-us/library/windows/desktop/… O primeiro parâmetro obtém lixo em vez de FALSE. É a razão pela qual hiberna em vez de dormir.
Sergeyt
Não funciona no Windows 10
T3rm1
@EhteshChoudhury, o problema nesse caso é que os parâmetros Rundll32 estão incorretos e completamente inadequados, para que eles realmente chamem SetSuspendState com os parâmetros: Hibernate: TRUE, ForceCritical: TRUE, DisableWakeEvents: TRUE. A última parte explica por que você não pode ativar o PC com nada além do botão liga / desliga. É apenas uma coincidência que tentar hibernar quando desativado fará com que o seu PC durma no Win7, e provavelmente por que ele não funciona para algumas pessoas.
SilverbackNet
10

O NirCmd funciona no Windows 8 (presumo que também funcione no Windows 7) → http://www.nirsoft.net/utils/nircmd.html
O comando é standby, mas coloca o computador no modo de suspensão.

nircmd.exe standby

Se você tiver o sono híbrido ativado, ele funcionará; ou seja, coloca o computador em suspensão e copia a memória para o disco em caso de perda de energia.

Eric L
fonte
11
Isso funciona sem precisar elevar para o administrador. Funciona com ou sem hibernação ativada. Funciona como esperado com o sono híbrido. Solução agradável para Win10.
dsmtoday
3

Veja o utilitário gratuito do Wizmo , que pode fazer muitas coisas.
O comando que você está procurando é provavelmente:

wizmo standby

harrymc
fonte
11
Wizmo tem o mesmo problema que rundll32.exe powrprof.dll,SetSuspendState 0,1,0- ele coloca o computador em hibernação, não no sono
Andomar
2
Não, desde o Vista ele realmente coloca o computador no Hybrid Sleep . Se você não quiser isso, desative o sono híbrido .
precisa saber é
11
o wizmo blackout funcionou no windows 8.1, 10. ÓTIMO !!!!!!!!!!!!!
YumYumYum
Wizmo funciona muito bem. Infelizmente, meu scanner de vírus corporativo o exclui, pois contém algumas seqüências que fazem a mcafee pensar que ele contém um cavalo de Tróia .
Bastian
@bastian: Mcafee sempre foi uma má notícia para um escritor de aplicativos (por experiência pessoal).
harrymc
3

Eu criei um atalho para rundll32.exe powrprof.dll,SetSuspendState 0,1,0(também tentei com 0,0,0), mas executar o atalho parecia colocar meu PC em hibernação. Não consegui acordar o PC usando o teclado; Eu tive que pressionar o botão liga / desliga e o PC mostrou as mensagens de postagem da placa principal, etc.

Depois de ler o documento da API do Windows , criei um programa muito simples, com apenas 3 linhas de digitação. Fiz o upload do executável que compilei para esta página (clique no botão "SleepTest.exe") , mas esse arquivo pode ser excluído depois de um tempo (este é um site gratuito de hospedagem de arquivos que acabei de encontrar por uma rápida pesquisa no Google).

Se você não confia em mim (o que é totalmente correto) ou o arquivo foi excluído, você mesmo pode compilar o código, é claro. Você precisa adicionar "PowrProf.lib" às dependências adicionais do vinculador.

#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,0parece estar fazendo a mesma coisa, mas, de alguma forma, o programa acima não colocou o computador em hibernação. Eu poderia acordar o PC instantaneamente (sem mensagens de postagem na placa-mãe, etc.) pressionando qualquer tecla do teclado.

Malditos vegetais
fonte
2

Você pode iniciar as opções de suspensão ou hibernação na linha de comando, conforme especificado abaixo e referenciado neste artigo .

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

Se o seu computador estiver configurado para permitir a hibernação, o comando acima iniciará a hibernação. Se o recurso de hibernação estiver desativado, ele entrará no estado de espera. Como outros usuários responderam anteriormente, shutdown.exe /?fornecerá muitas opções de desligamento.

Diabo azul
fonte
11
rundll32não deve ser usado para chamar SetSuspendStateporque sua assinatura não corresponde à esperada por rundll32. Consulte: support.microsoft.com/en-us/kb/164787 e msdn.microsoft.com/en-us/library/windows/desktop/… O primeiro parâmetro obtém lixo em vez de FALSE, portanto, sempre hiberna em vez de ir para dormir.
Sergeyt
1

Você deve primeiro desativar o Hibernate no Windows e depois colocar o computador no estado de suspensão . Use os seguintes dois comandos:

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

e para executar a ação inversa, Hibernando o computador, use os comandos abaixo:

powercfg -hibernate on
rundll32.exe powrprof.dll,SetSuspendState Hibernate
Mohsen Abasi
fonte
3
rundll32não se destina a chamadas SetSuspendStatee não deve ser usado para isso. O primeiro parâmetro obtém lixo em vez do valor correto. Portanto, ele sempre hiberna em vez de dormir (se você não desativou a hibernação).
Sergeyt
@SergeyT Parece estar funcionando para mim (depois de desativar a hibernação); você está dizendo que isso irá corromper o Windows?
moondra
Ele corrompe a pilha (uma vez que o rundll32 espera uma assinatura de chamada diferente, por isso mostra coisas da pilha que realmente não foram colocadas lá). Isso leva a um comportamento inesperado.
Imoatama
@imoatama agradável descoberta ...
masterxilo
1

Aqui está um artigo sobre o uso da CLI para desligar.

A Microsoft fornece PsTools, que fornece o desligamento da CLI junto com outras ferramentas úteis. Você pode conseguir isso aqui .

Wonton
fonte
1

apenas o QUICK SLEEPER funciona para mim (funciona no Windows 7,8,10).

código fonte ps disponível aqui .

T.Todua
fonte
11
Existe alguma chance de você fornecer um link para o site real do qual você obteve o arquivo? A vinculação direta ao arquivo de download, especialmente ao usar o encurtador de URL do ga, pode fazer com que o arquivo pareça particularmente suspeito, pois é uma tática frequentemente usada por criadores de malware.
Mokubai
ok, eu atualizei o link para o site oficial.
T.Todua
1

Se você tem o Python (com o pywin32) disponível, também pode chamar essa função SetSuspendState diretamente com:

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

Isso pode ser facilmente colocado em um arquivo em lotes ou em um atalho como:

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

Portanto, se você não tiver seus arquivos .py associados ao intérprete, basta clicar duas vezes no link.

traço-tom-bang
fonte
1

A parte de desligamento da pergunta é clara para todos.
shutdown.exe /?mostra todas as opções para desligar / reiniciar / opções avançadas de inicialização / inicialização de firmware.

Mas eu vejo tantas críticas por parte da parte do sono.
Todo mundo entende que rundll32.exenão deve ser usado para chamar funções aleatórias e simplesmente funciona aqui para hibernar inteiramente por coincidência. Mas essa é a natureza do Windows - uma caixa preta que as pessoas vasculharam e encontraram centenas de soluções alternativas para fazer um trabalho (gritar para dostips).

Existem tantas soluções " adequadas " propondo ferramentas externas , mas não consigo encontrar um script em lote nativo (híbrido / pinvoke / qualquer que seja) , mesmo que essa pergunta permaneça ativa ao longo dos anos.
Então, aqui está o meu power_sleep.bat simples :

@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

Até funciona como um grande comando de uma linha:

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();"
AveYo
fonte