Câu hỏi Sử dụng CMD để gửi máy tính để ngủ sau xx phút


Tôi đã cố gắng xây dựng một chương trình cho phép bạn tắt hoặc gửi một máy tính để ngủ sau khi một người dùng xác định tập hợp thời gian.

Tôi không có vấn đề với việc tắt máy tính, nhưng gặp khó khăn khi gửi nó vào giấc ngủ (sau 60 phút chẳng hạn)

Tôi có lệnh để gửi máy tính để ngủ nhưng tôi gặp khó khăn trong việc thiết lập thời gian mà chương trình chờ trước khi nó xảy ra:

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 trên & thoát

Hãy chỉ cho tôi hướng đi đúng.


1
2017-09-16 22:17


gốc


Bộ hẹn giờ dịch chuyển được đặt thành 3 giây vì -n 3 sẽ mất 3 giây để thực hiện đặt thành 3600 và kiểm tra - 50-3
Tôi sẽ đề nghị thay đổi Vbs hoặc powershell nếu bạn muốn dễ dàng kiểm soát sự chậm trễ - 50-3
Thêm một câu hỏi lập trình và phù hợp hơn cho SO hơn ở đây. . . - ernie


Các câu trả lời:


Câu hỏi của bạn có ít liên quan đến python, như lệnh bạn đã đưa ra trong dòng lệnh trên Windows, bao gồm cả bộ hẹn giờ tạm thời. Nhìn qua mã bạn đã hiển thị, nó chỉ là một loạt các lệnh dòng lệnh được xâu chuỗi cùng với &. . .

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

Phá vỡ điều này xuống, lệnh này thực hiện:

  1. powercfg -h off : tắt chế độ ngủ đông
  2. start /min "" C:\WINDOWS\System32\rundll32.exe PowrProf.dll,SetSuspendState 0,1,0 - Tôi không chắc chắn 100% về điều này: đặt máy tính vào chế độ ngủ
  3. ping -n 3 127.0.0.1 > nul : đây là một hack hẹn giờ phổ biến cho Windows, nơi nó về cơ bản giới thiệu một sự chậm trễ 3 giây; Tôi sẽ đoán đây là để xử lý một số vấn đề thời gian khi một hệ thống được thức dậy từ giấc ngủ, như lệnh này sẽ không chạy cho đến khi bạn đang thức dậy
  4. powercfg -h on : kích hoạt lại chế độ ngủ đông
  5. exit : thoát khỏi tập tin thực thi.

Vì vậy, không có sự chậm trễ ở đây. . . để thêm một sự chậm trễ trong python, bạn có thể sử dụng chức năng ngủ của module thời gian. Một số mã ví dụ sẽ giống như sau:

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

1
2017-09-16 22:47