Современный рынок программного обеспечения настолько необъятен, что, наверное, нет такой задачи, для решения которой программистами не было создано подходящей программы. С другой стороны, нельзя не заметить, что многие из таких программ не расширяют, по большому счету, возможности пользователя, а лишь упрощают выполнение и без того простых задач. В качестве примера можно привести утилиты для выключения и/или погружения компьютера в сон по расписанию.
Да, конечно, они удобны и просты, но зачем, спрашивается, захламлять свой компьютер сторонним программным обеспечением, если то же самое можно сделать средствами операционной системы? Если вы не в курсе, скриптовый язык классического командного интерпретатора позволяет переводить компьютер в режим сна как по требованию, так и по таймеру. За отправку компьютера в сон в Windows отвечает 10 функция SetSuspendState, «зашитая» в DLL-библиотеке powrprof.dll.
Вызвать функцию можно с помощью исполняемого файла Rundll32.exe, расположенного в каталоге System32.
А вот и команда вызова:
rundll32 powrprof.dll,SetSuspendState 0,1,0
Если выполнить ее в командной строке или PowerShell, компьютер будет немедленно отправлен в сон, точнее, в гибернацию, если таковая включена. Если же гибернация отключена, компьютер будет переведен в ждущий режим.
Команду мы знаем, осталось сделать так, чтобы она выполнялась через заданное время.
Тут тоже всё просто: создайте Блокнотом текстовый файл, первой строкой вставьте в него команду timeout /t 600 /nobreak, а второй строкой rundll32 powrprof.dll,SetSuspendState 0,1,0. Число 600 условное, это количество секунд, через которое будет выполнена команда отправки ПК в сон.
Параметр /nobreak необязателен, он выводит в консоль диалог прерывания/паузы, а вообще отменить выполнение команды вы можете простым закрытием командной строки.
Сохраните файл с расширением CMD.
И запустите, дабы убедиться, что всё работает.
Выключение компьютера по таймеру
Скриптовый язык можно использовать не только для погружения компьютера в гибернацию по расписанию, но и для его выключения. Для этого в Windows 10 используется команда shutdown /s или shutdown /s /f. Замените ею вторую строку в созданном скрипте для отправки ПК в гибернацию и вот у вас уже есть скрипт для завершения работы Windows 10 по таймеру.
Более простой вариант — короткая команда shutdown /s /t 600, где /t — включение таймера, а 600 — время в секундах, оставшееся до выключения компьютера.
Дополнительно команде shutdown можно передать параметр /f, принудительно закрывающий запущенные приложения, которые могут воспрепятствовать выключению компьютера.
Да, есть еще один маленький нюанс.
Если решите использовать второй вариант выключения, создайте еще скрипт с командой shutdown /а, он позволит вам отменить запланированное выключение компьютера.
Ну вот и всё, как видите, вполне можно обойтись и без сторонних таймеров.
Осталось только сделать запуск скриптов более удобным, например, поместив их на панель задач.
Правда, закрепления BAT и CMD файлов не поддерживается Windows, но вы можете создать на скрипт ярлык, прописав в оном перед полным путем к командному файлу cmd /c, а затем перетащив созданный ярлык на панель задач.
В сон можно отправить и так. Пишем в скрипт команды:
timeout /t 600 /nobreak
shutdown /h
Да, что то сложно и долго.
Создаю файл poweroff.bat вписываю в него две строчки кода:
timeout /t 1800 /nobreak
rundll32 powrprof.dll,SetSuspendState 0,1,0
Запускаю, включаю на YouTube ролик про космос, иду спать и через 30 минут комп переходит в спящий режим или гибернацию.
Так в спящий режим или гибернацию? Ведь это две разные вещи...
Для Free Alarm Clock как включить спящий режим с помощью файла cmd?