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?
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?
Respostas:
Você encontrará shutdown.exe
ser 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
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
é que NÃO FUNCIONA como deveria. SetSuspendState
colocará 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?
rundll32
não deve ser usado para chamar SetSuspendState
porque 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.
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 0
que irá dormir corretamente, e não hibernar , um computador
run as administrator
opção de clicar com o botão direito do mouse
psshutdown.exe
do arquivo para, por exemplo C:\Windows\System32
, para poder usar o comando sem pathprefix. É preciso executar psshutdown -d -t 0
com 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.
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 cmd.exe
, digitando , clicando com o botão direito do mouse e escolhendo Executar como administrador . Digite o seguinte comando:
powercfg -hibernate off
powrprof.dll
quando o hibernar está ativado? Só quero saber. Está relacionado a algum dos estados da ACPI?
rundll32
não deve ser usado para chamar SetSuspendState
porque 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.
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.
Veja o utilitário gratuito do Wizmo , que pode fazer muitas coisas.
O comando que você está procurando é provavelmente:
wizmo standby
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
- ele coloca o computador em hibernação, não no sono
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,0
parece 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.
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.
rundll32
não deve ser usado para chamar SetSuspendState
porque 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.
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
rundll32
não se destina a chamadas SetSuspendState
e 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).
apenas o QUICK SLEEPER funciona para mim (funciona no Windows 7,8,10).
código fonte ps disponível aqui .
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.
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.exe
nã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();"