Apa perintah yang digunakan untuk mematikan komputer Anda (tidak hibernasi)?

63

Saya ingin menempatkan PC Windows saya (Windows 7) ke kondisi tidur melalui baris perintah (jadi saya dapat mengikat tombol makro pada keyboard).

Tombol power pada PC diatur untuk tetapi komputer untuk tidur (tapi itu turun di lantai dan aku terlalu malas untuk meraih ke bawah) itu persis seperti yang saya inginkan (tidur menggunakan mode hybrid jika saya kehilangan daya)

Perintah sleep pada menu shutdown juga berfungsi.

kebanyakan info yang saya temukan mengatakan untuk digunakan;

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

Tetapi ini menempatkan komputer dalam mode hibernasi. Saya memang menonaktifkan hibernate tetapi menggunakan sleep hybrid.

Jadi, Apa perintah yang digunakan untuk mematikan komputer Anda (bukan hibernasi)?

Eric L.
sumber
5
rundll32.exe PowrProf.dll,SetSuspendStatetidak direkomendasikan. Itu berbahaya. (Karena itu merusak tumpukan, karena tidak sesuai dengan tanda tangan fungsi yang diminta oleh Rundll32. Maka hal-hal buruk yang tidak terduga dapat terjadi, seperti yang diperingatkan Raymond Chen ...)
Aaron Thoma

Jawaban:

13

Saya menemukan solusinya. Saya menginstal program freeware yang disebut AutoHotKey dan mencatat langkah-langkah untuk memanggil Start Menu -> Sleep ke dalam file skrip. Kemudian saya memenuhi file skrip ke dalam SleepWin7.exe yang dapat dieksekusi yang dapat dieksekusi.

Sekarang saya cukup menjalankan SleepWin7.exe untuk memasukkan komputer saya ke mode hybrid.

Anda dapat menghapus Autohotkey jika ini yang Anda butuhkan.


Pembaruan: Solusi di atas tidak berfungsi ketika pengguna tidak masuk, yaitu Layar Masuk Windows 7. (Komputer saya bangun pukul 4 pagi setiap hari Minggu untuk melakukan pencadangan mingguan, yang dilakukan tanpa login pengguna.) Dalam kasus tersebut, program Wizmo masih berfungsi:

wizmo.exe siaga sunyi!

Andy Lee
sumber
3
Berikut ini skrip AutoHotKey (menggunakan keyboard); Kirim, {LWINDOWN} {LWINUP} WinWait, menu Mulai, IfWinNotActive, menu Start ,, WinActivate, menu Start, WinWaitActive, menu Start, Send, {TAB} {UP} {KANAN} s
Eric L
Ini adalah solusi yang akhirnya saya gunakan. karena mendukung tidur hybrid.
Eric L
+1 Ini terasa kotor tapi berhasil. Saya harus mengubah bagian Kirim terakhir ke: "Kirim, {KANAN} {KANAN} s". BTW Saya hampir memberi Anda -1 untuk merekomendasikan untuk menghapus AHK, karena itu tidak akan termaafkan :)
demoncodemonkey
Saya juga menambahkan ini ke awal skrip untuk memastikan perintah masuk ke jendela desktop, dan mencegahnya hilang: WinActivate, ahk_class Progman
demoncodemonkey
1
Setelah beralih ke Windows 8, saya sekarang menggunakan NirCmd (sangat ringan) dan menempatkan komputer ke hybrid sleep; nircmd.exe standbyinfo lebih lanjut dapat ditemukan di sini -> nirsoft.net/utils/nircmd.html
Eric L
73

Semoga Anda menemukan ini berguna.

Mematikan %windir%\System32\shutdown.exe -s

Mulai ulang %windir%\System32\shutdown.exe -r

Keluar %windir%\System32\shutdown.exe -l

Bersiap %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Standby

Hibernasi %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Hibernate

Perhatian: rundll32.exe tidak boleh digunakan untuk meluncurkan powerprof.dll . Alih-alih, Anda harus memanggil SetSuspendState secara langsung. Ini dapat dilakukan dengan menggunakan Powershell - buat file misalnya sleep.ps1, dengan konten di bawah ini.

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

Kemudian jalankan dengan menggunakan powershell -File C:\your-path\sleep.ps1. Pertama-tama Anda mungkin perlu menjalankan perintah Set-ExecutionPolicy RemoteSigneduntuk mengaktifkan skrip PowerShell untuk dijalankan.

Skrip di atas menyebabkan penundaan sistem, yang akan tidur atau hibernasi tergantung pada pengaturan hibernasi Anda saat ini. Untuk mengubah pengaturan itu dari baris perintah, jalankan powercfg -h off(atau on) dari baris perintah sebagai administrator.

imoatama
sumber
4
whoa bagus! +1 ...
studiohack
9
Ini bagus, tetapi di mana yang untuk Sleeeeeeeeeeeeep
demoncodemonkey
7
Cara pintas siaga menempatkan mesin Win7 saya ke hibernate :(
pengguna
5
@demoncodemonkey: Standbyyyyyyyyyyyyyy = Sleeeeeeeeeeeee :)
Răzvan Flavius ​​Panda
11
Ternyata tidak: superuser.com/a/331545/21887 Jadi dianggap berbahaya untuk menggunakan metode ini dan tidak dianjurkan. (Ini merusak tumpukan.)
Aaron Thoma
16

Lihat utilitas gratis Wizmo , yang dapat melakukan banyak hal.
Perintah yang Anda cari mungkin:

wizmo standby

harrymc
sumber
Wizmo terlihat sangat keren! Hampir membuatku berharap aku bukan penggemar mac
trolle3000
Utilitas tidak perlu diinstal. Alat sederhana yang bagus.
Artur Carvalho
2
wizmo.exe quiet standbymenekan bunyi bip yang bisa dibilang mengganggu wizmo.exe.
Aaron Thoma
14

Anda dapat membuat file dengan ekstensi .ps1 (powershell) seperti "sleep.ps1" dan menulis ini:

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

Saya menggunakan ini ketika saya memiliki sesuatu yang berjalan dan harus meninggalkan pc dan tidak ingin mematikannya. Jadi saya mengubah skrip agar terlihat seperti ini:

$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)

Dan sekarang ketika saya menjalankannya, saya hanya memasukkan menit saya ingin menunggu sampai tidur.

Anda dapat menjalankan ini dari baris cmd dengan menulis

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

Jika Anda belum pernah menjalankan skrip PowerShell sebelumnya, Anda harus menjalankannya terlebih dahulu

Set-ExecutionPolicy RemoteSigned

di PowerShell untuk mengaktifkan skrip berjalan. Ini hanya harus dijalankan sekali.

Artur Carvalho
sumber
Bukankah nama variabel Anda terbalik?
Ullallulloo
11

Dengan Sysinternals PsTools [ unduh ]:

psshutdown -d

menggunakan alat Command Line PsShutdown .

(Anda mungkin lebih suka solusi ini jika Anda sudah mengunduh PsTools, ini cukup banyak digunakan. Selain itu, pendekatan ini setara dengan menggunakan .)wizmoquiet standby

Sumber: https://superuser.com/a/331545/21887

Aaron Thoma
sumber
7

Saya telah menggunakan utilitas SLEEP.EXE ini selama bertahun-tahun. Ini berfungsi dengan baik, dan Anda tidak harus mengingat argumen apa yang diberikan untuk mode ditunda (bentuk default "sleep").

jjlin
sumber
SLEEP.EXE bekerja untuk saya, pada Windows 7 Pro SP1. Halaman induk juga mencantumkan banyak alat baris perintah yang tampak berguna untuk Windows. Terima kasih, @jjlin!
CODE-REaD
6

untuk menonaktifkan mode hibernasi yang perlu Anda gunakan

powercfg -h off

sekarang, rundll32 powrprof.dll, SetSuspendState akan menempatkan stasiun Anda dalam mode stanby

[SUNTING]

sebenarnya saya tidak bisa mengatur untuk tidur hybrid karena saya punya laptop (keadaan yang tidak tersedia di stasiun seluler), untuk tidur hybrid Anda harus mengaktifkan hibernasi dan ada yang mengatakan bahwa rundll32 powrprof.dll, SetSuspendState memicu sleep default mode dalam pengaturan panel kontrol \ manajemen daya. silakan coba jika rundll32 powrprof.dll, tidur hybrid SetSuspendState memberikan beberapa hasil.


sumber
Ini juga menonaktifkan tidur hibrida, sehingga agak mengalahkan tujuannya
Eric L
rundll32 powrprof.dll, tidur hybrid SetSuspendState masih menempatkan komputer dalam hibernasi. terima kasih untuk idenya.
Eric L
rundll32 tidak dirancang untuk memanggil SetSuspendState, sehingga mendapat nilai parameter yang salah. Itu sebabnya selalu menyebabkan hibernasi jika Anda tidak menonaktifkannya dengan sengaja.
SergeyT
5

Buat file bat, di mana 600 ditunda dalam hitungan detik.

ping -n 600 -w 1 127.0.0.1> nul

matikan powercfg

% windir% \ System32 \ rundll32.exe powrprof.dll, SetSuspendState Standby

dim77x
sumber
Cara yang bagus untuk mematikan komputer, dan sangat mudah mengirim orang lain yang ingin tidur berjadwal.
Maurycy
Jawaban kreatif!
Jane Panda
Jangan gunakan rundll32.exe untuk memanggil SetSuspendState: itu tidak dirancang untuk itu. Lihat penjelasan di sini
SergeyT
4

Jika Anda kompeten dengan kompilasi program .NET perintah berikut akan melakukan ini

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

Catatan: Anda tidak perlu menonaktifkan hibernasi seperti yang diminta oleh rundll32 powrprof.dll,SetSuspendStateperintah. Anda juga dapat menggunakan PowerState.Hibernateyang akan hibernasi mesin jika Anda mau.

Anda bisa dengan mudah mengkompilasi EXE dengan perintah ini dengan versi Visual Studio . Cukup buat aplikasi konsol dan tambahkan referensi ke System.Windows.FormsDLL.

Simon
sumber
1
Wizmo yang dikutip di atas pada dasarnya sudah melakukan ini - menggunakannya sepertinya setara. Dan ini ditulis oleh Steve Gibson dan gratis, jadi mungkin lebih baik daripada apa yang saya dapat tangan coding hal yang sama!
stevemidgley
+1. Mencari sesuatu seperti ini di sini superuser.com/q/310045/84229
pengguna
Anda bahkan tidak perlu menggunakan Visual Studiountuk mengkompilasi. Sebagai gantinya, kompiler baris perintah csc.exedapat digunakan. Sudah diinstal di semua versi modern Windows.
SergeyT