Dormir um computador via arquivo de lote no Windows 7

13

Eu quero fazer um arquivo de lote que irá dormir meu computador após um período de tempo.

A coisa mais próxima que eu encontrei é colocá-lo em modo de espera, mas parece funcionar de forma diferente do que o botão de suspensão do meu teclado (inicialização mais longa, não acorde com o clique do mouse). Alguma ideia? Seria mais fácil em Python ou C #?

A técnica menos então ideal mencionada acima está chamando isso no prompt cmd:

Rundll32.exe powrprof.dll,SetSuspendState
    
por Saebin 26.05.2010 / 08:16

7 respostas

24

Simplesmente comande

rundll32.exe powrprof.dll,SetSuspendState

O sistema hiberna , mas se você escrever isto:

rundll32.exe powrprof.dll,SetSuspendState 0,1,0

E desligue a hibernação com o comando:

powercfg -hibernate off

Agora o seu sistema irá dormir e acordará com o movimento do mouse se selecionar um dispositivo para ele (role para baixo para saber como).

Lote um temporizador:

timeout /t 1200
rundll32.exe powrprof.dll,SetSuspendState 0,1,0

Onde 1200 é segundos, o que significa que após 20 minutos o lote executará o comando sleep.

Opcionalmente, você pode evitar o cancelamento da contagem regressiva (se você pressionar qualquer tecla na janela de lote):

timeout /t 1200 /nobreak
rundll32.exe powrprof.dll,SetSuspendState 0,1,0

Little HOWTO sobre como acordar com o mouse:

Ir para: Iniciar - > Painel de controle - > Mouse.

NajanelaPropriedadesdoMouse,cliquenaguiaHardwareeselecioneomousenalistadedispositivos.Normalmente,haveráapenasummouselistadoaqui,masissodependerádohardwarequevocêconectouaoseucomputador.Depoisdeselecionaromousenalista,cliquenobotãoPropriedades.

Agora, na janela Propriedades do seu mouse, clique no botão Alterar configurações na guia Geral .

Najanelaqueéaberta,cliquenaguiaGerenciamentodeenergiaemarqueaopçãoPermitirqueestedispositivoacioneocomputador.CliquenobotãoOKnessajanelaecliquenobotãoOKnasjanelasPropriedadesdomousequeaindaestãoabertas.Apartirdeagora,vocêpodeativaroWindows7apartirdomododesuspensão,clicandocomobotãodomouseoumovendoomouse.

    
por 26.05.2010 / 12:33
2
shutdown /h

irá hibernar o computador (não tenho certeza sobre a suspensão).

    
por 26.05.2010 / 12:46
1

Solução de trabalho!
Eu tive que usar o utilitário PsShutdown para permitir o sono adequado (problema primário é SetSuspendState não permite que os temporizadores de despertar despertem a máquina). Meu arquivo de lote para dormir é uma linha simples:

PsShutdown -d -t 2
    
por 25.07.2016 / 16:52
0

Você pode tentar SetSystemPowerState para evitar ter que desativar o Hiberanate.

rundll32.exe kernel32.dll, SetSystemPowerState

Observe que adicionar 1,0 ou 1 0 ou até mesmo fazer powrprof.dll Rundll32.exe, SetSuspendState 0 0 1 ou powrprof.dll Rundll32.exe, SetSuspendState 0,0,1 que os argumentos (0,0,1) significa NADA.

O powrprof.dll, SetSuspendState não analisa os argumentos do estilo rundll32 e, portanto, os ignora. É por isso que você precisa desativar o modo de hibernação.

    
por 27.09.2013 / 23:20
0

Esta pergunta já foi respondida.

powercfg -h off & start / min "" C: \ WINDOWS \ System32 \ rundll32.exe PowrProf.dll, SetSuspendState 0,1,0 & ping -n 3 127.0.0.1 > nul & powercfg -h on & sair

Veja o seguinte:

O que é o comando para usar para colocar seu computador para dormir (não hibernar)?

    
por 09.10.2013 / 01:42
0

Basta criar um arquivo em lote e inserir as seguintes linhas:

7200 = 2 hours

@echo off
timeout /t 7200 /nobreak
powercfg -h off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
powercfg -h on
    
por 02.03.2016 / 21:10
0

.NET para o resgate. Essa solução colocou o computador em repouso sem a necessidade de alterar a configuração do PC (desativando a hibernação). Execute este comando em lote:

powershell.exe -command "Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.Application]::SetSuspendState([System.Windows.Forms.PowerState]::Suspend, $false, $false)"

Você pode usar ::Suspend para suspensão ou ::Hibernate (que é a maneira como as outras respostas funcionam). Documentação para SetSuspendState.

Como o espaço para nome System.Windows.Forms não é carregado por padrão (ele faz no Powershell ISE), você precisa carregar o assembly para isso primeiro.

resposta original

    
por 21.03.2018 / 08:27