Спящий компьютер через командный файл в Windows 7


14

Я хочу сделать командный файл, который будет спать мой компьютер после определенного периода времени.

Самая близкая вещь, которую я нашел, - это поместить ее в режим ожидания, но, похоже, она работает не так, как кнопка сна на моей клавиатуре (более длительная загрузка, не просыпается при щелчке мыши). Есть идеи? Будет ли проще в Python или C #?

Упомянутый выше менее идеальный метод вызывает это в командной строке cmd:

Rundll32.exe powrprof.dll,SetSuspendState

Просто добавьте отсчетную часть в .bat и выполните это после этого.
— Apache

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

Гибернация совершенно разная, но, думаю, это правильное решение.
— Apache

Я верю, что Рендл - это то же самое, что и спящий. В спящем режиме вы щелкаете мышью, и ваш экран входа в систему появляется через пару секунд ... Гибернация должна перепроверить биос, жесткие диски и перенести сохраненное состояние с жесткого диска на RAM, а затем загрузить Windows. Единственный недостаток сна - это если вы теряете энергию, а сохраненное состояние, сохраненное в оперативной памяти, теряется (а более старые устройства фактически оставляют больше компонентов, таких как блок питания и вентиляторы).
— Saebin

Ответы:


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

Небольшой HOWTO о пробуждении с помощью мыши:

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

альтернативный текст

В окне « Свойства мыши» щелкните вкладку « Оборудование » и выберите мышь в списке устройств. Как правило, здесь указывается только одна мышь, но это зависит от оборудования, подключенного к вашему компьютеру. Когда вы выбрали свою мышь из списка, нажмите кнопку Свойства .

альтернативный текст

Теперь в окне « Свойства» для мыши нажмите кнопку « Изменить настройки» на вкладке « Общие ».

альтернативный текст

В открывшемся окне перейдите на вкладку « Управление питанием » и установите флажок « Разрешить этому устройству активировать компьютер» . Нажмите кнопку ОК в этом окне и нажмите кнопку ОК в окнах свойств мыши, которые все еще открыты. Отныне вы можете вывести Windows 7 из спящего режима, нажав кнопку мыши или переместив мышь.

альтернативный текст


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пространство имен не загружается по умолчанию (это происходит в Powershell ISE), для этого вам необходимо сначала загрузить сборку.

оригинальный ответ


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: Это совершенно неправильно. Он не работает под желаемой операционной системой OP.
— nc4pk

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

0

На этот вопрос уже дан ответ.

powercfg -h выкл. и запуск / мин. "C: \ WINDOWS \ System32 \ rundll32.exe PowrProf.dll, SetSuspendState 0,1,0 & ping -n 3 127.0.0.1> nul & powercfg -h вкл. и выйти

Смотрите следующее:

Какую команду использовать, чтобы перевести компьютер в спящий режим (не в спящий режим)?


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.