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

41

На этот вопрос уже есть ответ здесь:

Моды, пожалуйста, удалите дубликат тега из этого. Я объяснил это ниже:

Не дубликат «Двойной» вопрос не затрагивает фактор времени - что является настоящей проблемой здесь.

Я хочу перевести компьютер с Windows 7 в спящий режим через 10 часов после завершения загрузки. Когда я выполню это:

shutdown -h -t 36000

Все, что я получаю, это текст справки о завершении работы Не имеет значения, нахожусь ли я в админке или нормально для приглашения cmd. Я что-то упускаю? Я пробовал -t 36000только с теми же результатами. То же самое с /вместо -.

Так что либо: а) это не работает, либо б) есть забавный способ рассказать мне об этом. Настройки управления питанием мешают этой команде?

Обновление: /sкоммутатор выключает компьютер (не в спящем режиме). /hявляется действительным переключателем. Вот скриншот моей команды:

мой экран выключения

jcollum
источник
1
Вы уже запустили "powercfg / hibernate on"? А что произойдет, если вы запустите команду только с ключом / h и без ключа / t?
goblinbox
@goblinbox Я попробовал это с любым переключателем, ни один не работал. Нужно ли запускать powercfg, чтобы позволить shutdown cmd запускать ключ / h?
jcollum
Hibernate должен быть включен, чтобы работать, да.
goblinbox
Клянусь, я несколько раз просил моды убрать из этого тега «duplicate», но они отказываются.
Jcollum

Ответы:

37

-hПереключатель используется для выключения компьютера на Linux, а не Windows. Правильная команда для выключения компьютера Windows через 7 часов:

shutdown -s -t 36000

Windows покажет диалоговое окно с обратным отсчетом времени, пока компьютер не выключится.

Но вы хотите перейти в спящий режим, а не завершить работу, и, к сожалению, /hи /tпереключатель не работают вместе. В качестве обходного пути вы можете использовать atкоманду, чтобы запланировать shutdown /hзапуск в определенное время. Например, сейчас в моем часовом поясе 15:00, поэтому через 10 часов будет 1:00. Чтобы запланировать переход в спящий режим, я бы запустил:

at 1:00 shutdown /h

Он использует 24-часовой формат записи времени, поэтому, если вы хотите, чтобы он перешел в спящий режим в 13:00, вы должны выполнить:

at 13:00 shutdown /h

Обратите внимание, что хотя вам не требуются права администратора для запуска shutdownкоманды в установках Windows по умолчанию, они нужны для этой atкоманды.

Патчи
источник
+1 отключение? покажет все переключатели для команды
Дейв М
1
@jcollum: К сожалению об этом! Похоже, Windows не поддерживает спящий режим. Обратите внимание, если вы пропустите /t 36000переключатель, команда работает. Я добавлю обходной путь к своему ответу.
Патчи
Спасибо. Я никогда не проверял команду / h сама по себе, потому что это немедленно отключило бы ее. Кроме того, я не видел нигде на странице руководства, где говорилось, что они несовместимы - как бы я это нашел?
jcollum
6
Под Win 8.1 atкоманда отказывается запускаться, заявляя, что она устарела и заменена на schtasks. Жалость.
Доминикас Мостаускис
1
@DominykasMostauskis Я предполагаю, что это также верно для Windows 10.
jcollum
25

Не похоже, что опция -t поддерживается с опцией -h для выключения.

Под Windows 7 вы можете дублировать то, что вы пытаетесь сделать, с помощью скрипта .bat, содержащего следующее:

timeout /t 36000 /nobreak
shutdown -h

Это приведет к немедленному выходу компьютера из спящего режима по истечении времени ожидания.

Джо Интернет
источник
7
Вы можете избежать пакетного файла и запустить его напрямую: timeout /t 36000 /nobreak & shutdown /h конечно, если вы создадите пакетный файл, чтобы упростить его, вы должны заменить тайм-аут %1таким, чтобы он был универсальным.
Synetech
3
Одно предупреждение, однако, вы не можете прервать выключение, нажав клавишу с &версией; это немедленно отключит вас (вы отменяете только ожидание). С помощью пакетного файла вы можете нажать, Ctrl+Breakи CMD спросит, хотите ли вы завершить пакетный файл (и, таким образом, прервать завершение работы) или продолжить его. Таким образом, у вас есть выбор поведения. Или, вы можете написать более пакетный файл с помощью choiceи timeoutвообще пропустить : choice /n /t 3600 /d Y /m "Abort hibernate?" & if errorlevel 2 shutdown -h(однако он не показывает оставшееся время и ограничен 9999 секундами - для многочасового, просто используйте at).
Synetech
@Synetech: можно отменить, закрыв окно, только что попробовал.
Виктор Меллгрен
4
На самом деле команда без командного файла timeout /t 36000 /nobreak && shutdown -h- это остановится, если вы отмените таймаут. Только с одним амперсандом он тогда выполнит вторую команду.
Свен
@ Свен, я думаю, ты имел в виду shutdown /h. Обратите внимание /h, нет -h.
Доминикас Мостаускис
10

PsShutdown от Sysinternals может переводить компьютер в спящий режим по истечении указанного промежутка времени.

psshutdown -h -t 36000
Paradroid
источник
4
Это как-то излишне. Два других ответа указывают на более простое решение. В любом случае, спасибо за sysinternalsссылку
Исаак
6
@ Исаак: Как это излишне? PsShutdown может делать больше, чем отключение, и поэтому полезно иметь его. Я не думаю, что добавление дополнительных программ на вашем пути - это такая большая проблема.
Парадроид
1
@ Isaac Как это излишне? Это проще чем любое другое решение и просто спасло мою задницу! :)
Винс Пануччо
1
В отличие от встроенного завершения работы, PsShutdown не может отображать какие-либо уведомления о завершении работы в 64-разрядной ОС Windows. Это означает, что для активного пользователя нет предупреждения о скором отключении / спящем режиме.
Уивер