Usando o CMD para enviar o computador para dormir após xx minutos

1

Estou tentando criar um programa que permita que você desligue ou envie um computador para dormir após um período definido pelo usuário.

Eu não tive problemas em desligar o computador, mas estou com dificuldades para enviá-lo para dormir (após 60 minutos, por exemplo)

Eu tenho o comando para enviar o computador para dormir, mas estou com dificuldade para definir o horário em que o programa aguarda antes de acontecer:

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 & exit

Por favor, aponte-me na direção certa.

    
por Decrypt3d 17.09.2013 / 00:17

1 resposta

1

Sua pergunta tem pouco a ver com python, como o comando que você deu apenas na linha de comando no Windows, incluindo o temporizador improvisado. Olhando por cima do código que você mostrou, é apenas um monte de comandos de linha de comando ligados com & . . .

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 & exit

Quebrando isso, o comando faz:

  1. powercfg -h off : desativa a hibernação
  2. start /min "" C:\WINDOWS\System32\rundll32.exe PowrProf.dll,SetSuspendState 0,1,0 - Não tenho 100% de certeza sobre isso: coloca o computador para dormir
  3. ping -n 3 127.0.0.1 > nul : este é um hack temporário comum para o Windows, onde basicamente introduz um atraso de 3 segundos; Eu vou adivinhar isso é para lidar com alguns problemas de tempo quando um sistema está acordando do sono, como este comando não será executado até que você esteja re-acordando
  4. powercfg -h on : reativa a hibernação
  5. exit : sai do arquivo em lote.

Então, não há demora aqui. . . Para adicionar um atraso em Python, você pode usar a função de suspensão do módulo de horário . Algum código de exemplo seria algo como:

import time
# Wait 10 seconds before running the next command
delay = 10
time.sleep(delay)
print "hi . . . it's been {0} seconds!".format(delay)
    
por 17.09.2013 / 00:47