Tidur komputer melalui file batch di Windows 7


14

Saya ingin membuat file batch yang akan menidurkan komputer saya setelah jangka waktu tertentu.

Hal terdekat yang saya temukan adalah menempatkannya dalam keadaan siaga, tetapi tampaknya berfungsi berbeda dari tombol tidur pada keyboard saya (boot yang lebih lama, tidak terbangun dengan klik mouse). Ada ide? Apakah lebih mudah menggunakan Python atau C #?

Teknik yang kurang ideal yang disebutkan di atas menyebut ini dalam cmd prompt:

Rundll32.exe powrprof.dll,SetSuspendState

Tambahkan saja bagian hitung mundur ke .bat dan jalankan ini setelah itu.
Apache

sepertinya duplikat dari superuser.com/questions/83437/…
akira

Hibernasi benar-benar berbeda, tapi ya itu solusi yang tepat kurasa.
Apache

Saya percaya hal rundll sama dengan hibernasi. Dengan tidur, Anda mengklik mouse dan layar login Anda ada dalam beberapa detik ... hibernasi harus memeriksa ulang bios, harddrives, dan mentransfer status yang disimpan dari harddisk ke ram dan kemudian boot windows. Satu-satunya kelemahan untuk tidur adalah jika Anda kehilangan daya dan kondisi tersimpan yang disimpan dalam ram hilang (dan komputer lama sebenarnya meninggalkan lebih banyak komponen seperti PSU dan kipas).
Saebin

Jawaban:


26

Cukup perintah

rundll32.exe powrprof.dll,SetSuspendState

Apakah sistem hibernasi , tetapi jika Anda menulis ini:

rundll32.exe powrprof.dll,SetSuspendState 0,1,0

Dan matikan hibernasi dengan perintah:

powercfg -hibernate off

Sekarang sistem Anda akan tertidur, dan akan bangun dengan gerakan mouse jika memilih perangkat untuk itu (gulir ke bawah untuk mempelajari caranya).

Batch timer:

timeout /t 1200
rundll32.exe powrprof.dll,SetSuspendState 0,1,0

Di mana 1200 adalah detik, yang berarti setelah 20 menit batch akan menjalankan perintah sleep.

Secara opsional, Anda dapat mencegah pembatalan hitung mundur (jika Anda menekan tombol apa saja di jendela kumpulan):

timeout /t 1200 /nobreak
rundll32.exe powrprof.dll,SetSuspendState 0,1,0

HOWTO kecil tentang bangun dengan mouse:

Pergi ke: Mulai -> Control Panel -> Mouse.

teks alternatif

Di jendela Mouse Properties , klik tab Hardware dan pilih mouse Anda dari daftar perangkat. Biasanya, hanya akan ada satu mouse yang terdaftar di sini tetapi itu akan tergantung pada perangkat keras yang Anda terhubung ke komputer Anda. Ketika Anda telah memilih mouse dari daftar, klik tombol Properties .

teks alternatif

Sekarang di jendela Properties untuk mouse Anda, klik tombol Change Settings pada tab General .

teks alternatif

Di jendela yang terbuka, klik tab Manajemen Daya dan centang opsi berjudul Izinkan Perangkat Ini untuk Membangunkan Komputer . Klik tombol OK di jendela ini dan klik tombol OK di jendela Mouse Properties yang masih terbuka. Mulai sekarang, Anda dapat membangunkan Windows 7 dari mode tidur dengan mengklik tombol mouse atau menggerakkan mouse.

teks alternatif


3
wow bung, kamu sangat suka menjawab pertanyaan :)
Omu


2

Solusi bekerja!
Saya harus menggunakan PsShutdownutilitas untuk memungkinkan tidur yang benar (masalah utama adalah SetSuspendStatetidak memungkinkan pengukur waktu bangun mesin). File batch saya untuk tidur adalah 1 baris sederhana:

PsShutdown -d -t 2

Silakan baca Bagaimana saya merekomendasikan perangkat lunak untuk beberapa tips tentang bagaimana Anda harus merekomendasikan perangkat lunak. Anda harus memberikan setidaknya tautan, beberapa informasi tambahan tentang perangkat lunak itu sendiri, dan bagaimana itu dapat digunakan untuk menyelesaikan masalah dalam pertanyaan.
DavidPostill

1
Ini tidak berfungsi di pc saya ...
mrbengi

1

.NET untuk menyelamatkan. Solusi ini membuat komputer tidur tanpa perlu mengubah konfigurasi PC (mematikan hibernasi). Jalankan perintah ini dalam batch:

powershell.exe -command "Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.Application]::SetSuspendState([System.Windows.Forms.PowerState]::Suspend, $false, $false)"

Anda dapat menggunakannya ::Suspenduntuk tidur, atau ::Hibernate(yang mana cara jawaban lainnya bekerja). Dokumentasi untuk SetSuspendState.

Karena System.Windows.Formsnamespace tidak dimuat secara default (tidak di Powershell ISE), Anda harus memuat perakitan untuk itu pada awalnya.

jawaban asli


0

Anda dapat mencoba SetSystemPowerState untuk menghindari keharusan menonaktifkan Hiberanate.

rundll32.exe kernel32.dll, SetSystemPowerState

Perhatikan bahwa menambahkan 1,0 atau 1 0 atau bahkan melakukan powrprof.dll Rundll32.exe, SetSuspendState 0 0 1 atau powrprof.dll Rundll32.exe, SetSuspendState 0,0,1 bahwa argumen (0,0,1) berarti TIDAK ADA.

The powrprof.dll, SetSuspendState tidak menguraikan argumen gaya rundll32 dan karenanya mengabaikannya. Itu sebabnya Anda harus menonaktifkan hibernate.


1
Ini berguna untuk Windows XP, bukan Vista atau yang lebih baru.
Rodney

1
Perhatikan bahwa rundll32 mengabaikan argumen yang Anda berikan (karenanya mengapa SetSuspendState selalu hibernasi) karena DLL tidak dirancang untuk menerima argumen dari rundll32.
Rodney

-1: Ini sepenuhnya salah. Itu tidak bekerja di bawah sistem operasi yang diinginkan OP.
nc4pk

rundll32 TIDAK melewati argumen karenanya mengapa Anda harus menonaktifkan Hibernate untuk membuatnya berfungsi. Argumen default memerintahkannya untuk selalu hibernasi, tetapi jika hibernasi dinonaktifkan, API DLL default akan tertidur.
Rodney


0

Cukup buat file batch dan masukkan baris berikut:

7200 = 2 hours

@echo off
timeout /t 7200 /nobreak
powercfg -h off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
powercfg -h on
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.