Сплячий комп'ютер за допомогою пакетного файлу в Windows 7


14

Я хочу створити пакетний файл, який буде спати мій комп'ютер через певний проміжок часу.

Найближче, що я знайшов, - це переведення його в режим очікування, але, здається, працює інакше, ніж кнопка сну на моїй клавіатурі (довший завантаження, не прокидається при натисканні миші). Будь-які ідеї? Чи було б простіше в Python або C #?

Менш ідеальна техніка, згадана вище, викликає це в підказці cmd:

Rundll32.exe powrprof.dll,SetSuspendState

Просто додайте частину відліку в .bat і виконайте це після цього.
Apache

виглядає як дублікат superuser.com/questions/83437/…
akira

Зимова сплячка абсолютно не відрізняється, але так, це правильне рішення, я думаю.
Apache

Я вважаю, що річ - це те саме, що і сплячка. Під час сну ви клацаєте мишкою, і ваш екран входу є там через пару секунд ... сплячий режим повинен повторно перевірити біос, жорсткі диски та перенести збережений стан з жорсткого диска на таран, а потім завантажувати вікна. Єдиний недолік сну - це якщо ви втратите живлення, а збережений стан, який зберігається в операційній пам'яті, втрачено (а старіші ПК фактично залишають більше компонентів, як PSU та вентилятори).
Сабін

Відповіді:


26

Просто командуйте

rundll32.exe powrprof.dll,SetSuspendState

Система перебуває в сплячому режимі , але якщо ви пишете це:

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

І вимкніть сплячку командою:

powercfg -hibernate off

Тепер ваша система буде засинати і прокидається при русі миші, якщо вибрали пристрій для цього (прокрутіть униз, щоб дізнатися, як це зробити).

Пакетний таймер:

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

Де 1200 секунд, це означає, що через 20 хвилин партія виконає команду сну.

За бажанням ви можете запобігти скасування відліку (якщо натиснути будь-яку клавішу в пакетному вікні):

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

Маленький спосіб прокидання миші:

Перейдіть до: Пуск -> Панель управління -> Миша.

alt текст

У вікні " Властивості миші" натисніть на вкладку " Обладнання" та виберіть мишку зі списку пристроїв. Зазвичай тут буде вказана лише одна миша, але це залежатиме від обладнання, яке ви підключили до комп'ютера. Вибравши мишку зі списку, натисніть кнопку Властивості .

alt текст

Тепер у вікні Властивості для вашої миші натисніть кнопку Змінити налаштування на вкладці Загальні .

alt текст

У вікні, що відкриється, перейдіть на вкладку « Управління живленням » і поставте прапорець під назвою « Дозволити цьому пристрою прокидання комп'ютера» . Натисніть кнопку ОК у цьому вікні та натисніть кнопку ОК у вікнах властивостей миші, які все ще відкриті. Відтепер ви можете розбудити Windows 7 зі сплячого режиму, натиснувши кнопку миші або перемістивши мишу.

alt текст


3
вау людино, вам дуже подобається відповідати на питання :)
Ому,


2

Робоче рішення!
Мені довелося скористатися PsShutdownутилітою, щоб дозволити належний сон (основне питання - SetSuspendStateце не дозволяє таймерам будильника розбудити машину). Мій пакетний файл для сну - це 1 простий рядок:

PsShutdown -d -t 2

Будь ласка, прочитайте Як я рекомендую програмне забезпечення для деяких порад щодо того, як вам слід рекомендувати програмне забезпечення. Ви повинні надати принаймні посилання, додаткову інформацію про саме програмне забезпечення та те, як його можна використовувати для вирішення проблеми у питанні.
DavidPostill

1
На моєму ПК це не спрацювало ...
mrbengi

1

.NET на допомогу. Це рішення дозволяє перевести комп'ютер у режим сну без зміни конфігурації ПК (вимкнення сплячки). Запустіть цю команду в пакеті:

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

Ви можете використовувати або ::Suspendдля сну, або ::Hibernate(як спосіб інших відповідей). Документація для SetSuspendState.

Оскільки System.Windows.Formsпростір імен за замовчуванням не завантажується (це робиться в ISS Powershell), спочатку потрібно завантажити збірку для цього.

оригінальна відповідь


0

Ви можете спробувати SetSystemPowerState, щоб уникнути необхідності відключення Hiberanate.

rundll32.exe kernel32.dll, SetSystemPowerState

Зауважте, що додавання 1,0 або 1 0 або навіть виконання Rundll32.exe powrprof.dll, SetSuspendState 0 0 1 або Rundll32.exe powrprof.dll, SetSuspendState 0,0,1, що аргументи (0,0,1) означають НІЧЕ.

Powrprof.dll, SetSuspendState не аналізує аргументи стилю rundll32 і, таким чином, їх ігнорує. Ось чому вам доведеться відключити сплячий режим.


1
Це корисно для Windows XP, а не Vista або новішої версії.
Родні

1
Зауважте, що rundll32 ігнорує наведені вами аргументи (звідси чому SetSuspendState завжди зимує), оскільки DLL не призначений для прийому аргументів від rundll32.
Родні

-1: Це відверто неправильно. Він не працює в потрібній операційній системі ОП.
nc4pk

rundll32 НЕ передає аргументи, отже, чому вам потрібно вимкнути Hibernate, щоб він працював. Аргументи за замовчуванням говорять про те, що вона завжди перебуває в сплячому режимі, але якщо сплячий режим відключений, API DLL за замовчуванням перемикається.
Родні

0

На це питання вже відповіли.

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 and exit

Дивіться наступне:

Яку команду слід використовувати для переходу у режим сну (а не в сплячку)?


1
Якщо ви вважаєте, що це питання є дублікатом, сміливо позначте його як таке.
Мойсей

0

Просто створіть пакетний файл і вставте наступні рядки:

7200 = 2 hours

@echo off
timeout /t 7200 /nobreak
powercfg -h off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
powercfg -h on
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.