Lệnh sử dụng để đưa máy tính của bạn vào chế độ ngủ (không ngủ đông) là gì?


63

Tôi muốn đặt PC Windows (Windows 7) của mình vào trạng thái ngủ thông qua dòng lệnh (để tôi có thể liên kết với nút macro trên bàn phím).

Nút nguồn trên PC được thiết lập để nhưng máy tính ngủ (nhưng nó nằm trên sàn và tôi quá lười để xuống) chính xác như tôi muốn (ngủ bằng chế độ lai trong trường hợp tôi mất điện)

Lệnh ngủ trên menu tắt máy cũng hoạt động.

hầu hết các thông tin tôi tìm thấy nói để sử dụng;

%windir%\system32\rundll32.exe PowrProf.dll, SetSuspendState 0,1,0

Nhưng điều này đặt máy tính ở chế độ ngủ đông. Tôi đã bị vô hiệu hóa ngủ đông nhưng sử dụng giấc ngủ lai.

Vì vậy, lệnh sử dụng để đưa máy tính của bạn vào trạng thái ngủ (không ngủ đông) là gì?


5
rundll32.exe PowrProf.dll,SetSuspendStatekhông được khuyến khích. Nó nguy hiểm. (Bởi vì nó corrupts chồng, vì nó không phù hợp với chức năng chữ ký yêu cầu bằng Rundll32. Sau đó, những điều tồi tệ có thể xảy ra không lường trước được, như Raymond Chen cảnh báo ...)
Aaron Thoma

Câu trả lời:


13

Tôi tìm thấy một giải pháp. Tôi đã cài đặt một chương trình phần mềm miễn phí có tên AutoHotKey và ghi lại các bước để gọi Menu bắt đầu -> Ngủ vào tệp tập lệnh. Sau đó, tôi đã tuân thủ các tập tin kịch bản thành một tệp thực thi độc lập SleepWin7.exe.

Bây giờ tôi chỉ cần chạy SleepWin7.exe để đưa máy tính của tôi vào chế độ ngủ lai.

Bạn có thể gỡ cài đặt AutoHotKey nếu đây là tất cả những gì bạn cần.


Cập nhật: Giải pháp trên không hoạt động khi người dùng không đăng nhập, tức là Màn hình đăng nhập Windows 7. (Máy tính của tôi thức dậy lúc 4 giờ sáng mỗi Chủ nhật để thực hiện sao lưu hàng tuần, được thực hiện mà không cần đăng nhập của người dùng.) Trong trường hợp đó, chương trình Wizmo vẫn hoạt động:

wizmo.exe yên tĩnh chờ!


3
Đây là một kịch bản AutoHotKey (sử dụng bàn phím); Gửi, {LWINDOWN} {LWINUP} WinWait, menu Bắt đầu, IfWinNotActive, menu Bắt đầu, WinActivate, menu Bắt đầu, WinWaitActive, menu Bắt đầu, Gửi, {TAB} {UP} {RIGHT} s
Eric L

Đây là giải pháp mà tôi đã kết thúc sử dụng. vì nó hỗ trợ giấc ngủ lai.
Eric L

+1 Điều này cảm thấy bẩn nhưng nó hoạt động. Tôi đã phải thay đổi phần Gửi cuối cùng thành: "Gửi, {RIGHT} {RIGHT} s". BTW Tôi gần như đã cho bạn -1 vì đã khuyến nghị gỡ cài đặt AHK, vì điều đó sẽ không thể tha thứ được :)
demcodemonkey

Tôi cũng đã thêm này khi bắt đầu của kịch bản để đảm bảo các lệnh đi đến cửa sổ máy tính để bàn, và ngăn ngừa họ bị mất: WinActivate, ahk_class Progman
demoncodemonkey

1
Sau khi chuyển sang Windows 8, bây giờ tôi đang sử dụng NirCmd (trọng lượng rất nhẹ) và nó đưa máy tính vào trạng thái lai; nircmd.exe standbyThông tin thêm có thể được tìm thấy ở đây -> nirsoft.net/utils/nircmd.html
Eric L

73

Hy vọng bạn tìm thấy những hữu ích.

Tắt %windir%\System32\shutdown.exe -s

Khởi động lại %windir%\System32\shutdown.exe -r

Đăng xuất %windir%\System32\shutdown.exe -l

Đứng gần %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Standby

Ngủ đông %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Hibernate

Thận trọng: không nên sử dụng rundll32.exe để khởi chạy powerprof.dll . Thay vào đó, bạn nên gọi trực tiếp SetSuspendState. Điều này có thể được thực hiện bằng cách sử dụng Powershell - tạo một tệp, ví dụ như ngủ.ps1, với các nội dung dưới đây.

Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)

Sau đó chạy nó bằng cách sử dụng powershell -File C:\your-path\sleep.ps1. Trước tiên bạn có thể cần chạy lệnh Set-ExecutionPolicy RemoteSignedđể cho phép các tập lệnh powershell chạy.

Kịch bản trên gây ra đình chỉ hệ thống, sẽ ngủ hoặc ngủ đông tùy thuộc vào cài đặt ngủ đông hiện tại của bạn. Để thay đổi cài đặt đó từ dòng lệnh, hãy chạy powercfg -h off(hoặc on) từ dòng lệnh với tư cách quản trị viên.


4
thật tuyệt +1 ...
studiohack

9
Này là rất tốt nhưng đó là một cho Sleeeeeeeeeeeeep
demoncodemonkey

7
Phím tắt ở chế độ chờ đặt máy Win7 của tôi ở chế độ ngủ đông :(
người dùng

5
@demoncodemonkey: Standbyyyyyyyyyyyyy = Sleeeeeeeeeeeeep :)
Răzvan Flavius Panda

11
Rõ ràng là không: superuser.com/a/331545/21887 Vì vậy, nó được coi là nguy hiểm khi sử dụng phương pháp này và không được khuyến khích. (Nó làm hỏng ngăn xếp.)
Aaron Thoma

16

Xem tiện ích miễn phí của Wizmo , có thể làm rất nhiều thứ.
Lệnh bạn đang tìm kiếm có lẽ là:

wizmo chờ


Wizmo trông khá tuyệt! Hầu như khiến tôi ước mình không phải là một fanboy mac
trolle3000

Tiện ích không cần phải cài đặt. Công cụ đơn giản đẹp.
Artur Carvalho

2
wizmo.exe quiet standbyđàn áp tiếng bíp khó chịu bằng cách wizmo.exe.
Aaron Thoma

14

Bạn có thể tạo một tệp có phần mở rộng .ps1 (powershell) như "ngủ.ps1" và viết điều này:

Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)

Tôi sử dụng cái này khi tôi có thứ gì đó đang chạy và phải rời khỏi máy tính và không muốn tắt nó đi. Vì vậy, tôi thay đổi kịch bản để trông như thế này:

$minutes = read-host "Enter minutes to wait until sleep";
$secs= 60*$minutes;
Start-sleep -s $secs

Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)

Và bây giờ khi tôi chạy nó, tôi chỉ cần nhập những phút tôi muốn đợi cho đến khi ngủ.

Bạn có thể chạy nó từ dòng cmd bằng cách viết

powershell -File C:\your-path\sleep.ps1

Nếu bạn chưa bao giờ chạy tập lệnh PowerShell trước đó, trước tiên bạn sẽ muốn chạy

Set-ExecutionPolicy RemoteSigned

trong PowerShell để cho phép tập lệnh chạy. Điều này chỉ phải được chạy một lần.


Không phải tên của biến của bạn ngược?
Ullallulloo


7

Tôi đã sử dụng tiện ích SLEEP.EXE này trong nhiều năm. Nó hoạt động tốt và bạn không cần phải nhớ những đối số nào sẽ đưa ra cho chế độ tạm dừng (dạng mặc định của "chế độ ngủ").


SLEEP.EXE hoạt động với tôi, trên Windows 7 Pro SP1. Trang mẹ cũng liệt kê nhiều công cụ dòng lệnh hữu ích khác cho Windows. Cảm ơn, @jjlin!
MÃ-REaD

6

để tắt chế độ ngủ đông, bạn cần sử dụng

powercfg -h off

bây giờ, rundll32 powrprof.dll, SetSuspendState sẽ đặt trạm của bạn ở chế độ ổn định

[BIÊN TẬP]

thực sự tôi không thể thiết lập cho một giấc ngủ lai vì tôi có một máy tính xách tay (trạng thái không có sẵn trên các trạm di động), đối với giấc ngủ lai bạn cần kích hoạt chế độ ngủ đông và một số người nói rằng rundll32 powrprof.dll, SetSuspendState kích hoạt chế độ ngủ mặc định chế độ trong bảng điều khiển \ cài đặt quản lý nguồn. vui lòng thử nếu rundll32 powrprof.dll, giấc ngủ lai SetSuspendState cho một số kết quả.


Điều này cũng vô hiệu hóa giấc ngủ lai, do đó, nó đánh bại mục đích
Eric L

rundll32 powrprof.dll, giấc ngủ lai SetSuspendState vẫn đưa máy tính vào trạng thái ngủ đông. cảm ơn vì ý tưởng
Eric L

rundll32 không được thiết kế để gọi SetSuspendState, do đó, nó nhận được các giá trị tham số sai. Đó là lý do tại sao nó luôn gây ngủ đông nếu bạn không cố ý vô hiệu hóa nó.
SergeyT

5

Tạo một tập tin bat, trong đó 600 là độ trễ trong vài giây.

ping -n 600 -w 1 127.0.0.1> không

tắt nguồn

% Windir% \ System32 \ rundll32.exe powrprof.dll, SetSuspendState Chờ


Cách tuyệt vời để đặt máy tính vào giấc ngủ, và rất dễ dàng để gửi một người khác muốn ngủ bù.
Maurycy

Câu trả lời sáng tạo!
Jane Panda

Đừng sử dụng rundll32.exe để gọi SetSuspendState: nó không được thiết kế cho điều đó. Xem giải thích tại đây
SergeyT

4

Nếu bạn có khả năng biên dịch chương trình .NET, lệnh sau sẽ thực hiện việc này

System.Windows.Forms.Application.SetSuspendState(PowerState.Suspend, 
                                                 false,   /* force */
                                                 true     /* disableWake */);

Lưu ý: Bạn không cần phải tắt chế độ ngủ đông theo yêu cầu của rundll32 powrprof.dll,SetSuspendStatelệnh. Bạn cũng có thể sử dụng PowerState.Hibernatesẽ ngủ đông máy nếu bạn muốn.

Bạn có thể dễ dàng biên dịch EXE bằng lệnh này với bất kỳ phiên bản Visual Studio nào . Chỉ cần tạo một ứng dụng giao diện điều khiển và thêm một tham chiếu đến System.Windows.FormsDLL.


1
Wizmo được trích dẫn ở trên về cơ bản đã thực hiện điều này - sử dụng nó có vẻ như tương đương. Và nó được viết bởi Steve Gibson và miễn phí, nên có lẽ tốt hơn những gì tôi nhận được bằng tay mã hóa điều tương tự!
stevemidgley

+1. Tìm kiếm một cái gì đó như thế này ở đây superuser.com/q/310045/84229
người dùng

Bạn thậm chí không phải sử dụng Visual Studiođể biên dịch. Thay vào đó, trình biên dịch dòng lệnh csc.execó thể được sử dụng. Nó đã được cài đặt trong tất cả các phiên bản hiện đại của Windows.
SergeyT
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.