Używanie CMD do wysyłania komputera do uśpienia po xx minutach

1

Próbuję zbudować program, który umożliwia wyłączenie lub wysłanie komputera do trybu uśpienia po upływie określonego czasu.

Nie miałem problemu z wyłączeniem komputera, ale mam trudności z wysłaniem go w tryb uśpienia (na przykład po 60 minutach)

Mam polecenie wysłania komputera w tryb uśpienia, ale mam trudności z ustawieniem czasu, w którym program czeka, zanim to nastąpi:

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

Proszę wskazać mi właściwy kierunek.

Deszyfruj3d
źródło
Timer zmiany biegów ustawiony jest na 3 sekundy, ponieważ -n 3 zajmie 3 sekundy, aby ustawić go na 3600 i przetestować
50-3
1
Sugerowałbym zmianę Vbs lub PowerShell, jeśli chcesz łatwo kontrolować opóźnienia
50-3
Bardziej pytanie programistyczne i lepiej dostosowane do SO niż tutaj. . .
ernie

Odpowiedzi:

1

Twoje pytanie ma niewiele wspólnego z pythonem, ponieważ polecenie, które wydałeś w wierszu poleceń systemu Windows, w tym prowizoryczny zegar. Patrząc na pokazany kod, to tylko kilka poleceń wiersza poleceń połączonych z &. . .

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

Podział tego polecenia powoduje:

  1. powercfg -h off : wyłącza hibernację
  2. start /min "" C:\WINDOWS\System32\rundll32.exe PowrProf.dll,SetSuspendState 0,1,0 - Nie jestem w 100% tego pewien: uśpienie komputera
  3. ping -n 3 127.0.0.1 > nul: jest to typowy hack z timerem dla systemu Windows, który zasadniczo wprowadza 3-sekundowe opóźnienie; Domyślam się, że ma to na celu rozwiązanie niektórych problemów z synchronizacją, gdy system budzi się ze snu, ponieważ to polecenie nie uruchomi się, dopóki się nie obudzisz
  4. powercfg -h on : ponownie włącza hibernację
  5. exit : wychodzi z pliku wsadowego.

Więc nie ma tutaj opóźnienia. . . aby dodać opóźnienie w pythonie, możesz użyć funkcji uśpienia modułu czasu . Przykładowy kod mógłby wyglądać następująco:

import time
# Wait 10 seconds before running the next command
delay = 10
time.sleep(delay)
print "hi . . . it's been {0} seconds!".format(delay)
ernie
źródło