Меню Закрыть

Сон через командную строку

Содержание

Блог, инструкция системного администратора, форум, советы, помощь

Спящий режим из командной строки

Привет, сегодня коротко о том как погрузить ПК в спящий режим из командной строки. Это может понадобиться для того чтобы по расписанию управлять питанием ПК. Не уверен что кто то это использует на практике, обычно все же чаще нужно разбудить, но несмотря на это такая возможность есть.

Все довольно просто и бонально:

Управление параметрами электропитания из командной строки (данную команду можно включить в .bat или .cmd файл):

Ценность этой статьи скорее не в самом решении, а в напоминании как можно быстро решать простые задачи.
Но если Вам нужно простое решение — пожалуйста:

Сохраните в CMD эти строки и после запуска через 20 минут (1200 секунд) компьютер перейдет в спящий режим. Итого программа заняла 73 байт:

Но если Вам нужно именно выключить, то всё будет еще короче, а именно 47 байт. Просто вторая строка будет выглядеть:

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

В большинстве своем всё новое это хорошо забытое старое.

Сначала рассмотрим что делают эти строки:

Пингуем IP адрес который всегда доступен (разве что Ваш firewall настроен «с выдумкой»). Интервал по умолчанию 1000 мс = 1 секунда. Ключ -n задает количество повторений 20 минут х 60 секунд = 1200 + 1 (т.к. первый пинг возвращается менее чем через 1 мс). А конструкция > nul говорит интерпретатору что стандартный вывод будет направляться в nul дабы избавиться от ненужного вывода на экран.

Происходит вызов программы rundll32.exe, которая позволяет выполнить подпрограмму из динамической библиотеки. В данном случае SetSuspendState с нужными нам параметрами. Подробное описание в MSDN.

Читайте также:  Установить программу для просмотра фотографий бесплатно

Следует заметить, что если у вас включен гибридный режим сна (Hibernate), то войдет он именно в этот режим. Отключить его можно запустив от имени администратора следующее:

Запуск моего любимого интернет радио через Winamp в отдельном потоке.

Заблокировать рабочую станцию (WIN + L).

Гибридный режим сна (Hibernate).

Старая шутка с включением режима мыши для левши (меняются левая и правая кнопка мыши).

Отменить шутку с мышкой можно вызвав диалог настройки мыши и отключив эту функцию.

Переместить курсор в левый верхний угол.

Расположить все не свернутые окна каскадом.

Расположить все не свернутые окна по вертикали.

Еще много интересного можно найти на просторах интернета и придумать, вспоминая документацию по WinAPI функциям.

Есть всем известное выражение которое многим нравится:

Немного истории:

Еще в далёком 2003 году для выключения ПК по таймеру на скорую руку писалась простенькая программка. Писал сам, ибо знакомых программистов и доступа к интернету в то время у меня не было. Уверен, что много таких же «домашних программистов», которые купив или нарезав на болванки MSDN изучали программирование под Windows ночи напролёт. По случаю написания статьи отрыл ее в старом архиве на родительском ПК. Выглядела она незатейливо, но задачу свою выполняла. Как оказалось, даже сейчас ей пользуются несколько моих знакомых.

На чём она была написана уже и не помню (VC, VB, Delphi или Assembler). Размер ее был тоже не большим, но все же 16 166 против 47 байт не идут ни в какое сравнение.
И когда пару дней назад мне понадобился такой же функционал я полез искать похожий софт. Каково же было моё разочарование, когда я нашел кучу программ в среднем от 1,1 Мб до огромных монстров 15,2 Мб размером. Естественно совесть мне не позволила даже в песочнице запустить эту ересь. Понимая что мне нужна задержка выполнения в 20 минут и вызов одной лишь процедуры я вспомнил про rundll32.exe, полез в инет и не ошибся. В итоге решение было найдено за 1 минуту.

Читайте также:  Вождение на фуре обучение

Мораль:

Зачастую для решения простых задач нам не нужен сторонний софт. Достаточно просто зайти в поисковик и найти простое решение задачи, которое в 98,785% уже есть в свободном доступе. Конечно же нужно упомянуть и другой путь, для настоящих ИТ-шников, включить воображение, зайти в мануалы MSDN и воспользоваться готовым функционалом ОС. Согласитесь, приятно пользоваться простыми и элегантными решениями, но вдвойне приятнее когда до их решения ты дошел своим умом.

Как и обещалось ранее ссылки:
Скрипты таймеров выключения, запуска радио и перехода в спящий режим — radio_sleep_scripts.zip
Вдруг будет интересна моя старая поделка — ExitXP.exe

Надеюсь мой первый пост Вам понравился. Буду рад замечаниям и предложениям касательно статьи. Хотелось бы увидеть Ваши интересные решения похожих задач в комментариях. Спасибо что уделили время и прочли до конца.

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Я хочу перевести свой Windows PC (Windows 7) в состояние ожидания через командную строку (так что я могу привязываться к кнопке макроса на клавиатуре).

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

Спящая команда в меню выключения также работает.

самая информация, которую я нашел, говорит использовать;

Но это переводит компьютер в спящий режим. У меня есть спящий режим, но с гибридным сном.

Читайте также:  Yamaha ns p51 отзывы

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

9 ответов

Я нашел решение. Я установил бесплатную программу под названием AutoHotKey и записал шаги для вызова меню «Пуск» — > Сон в файл сценария. Затем я выполнил файл сценария в автономный исполняемый файл SleepWin7.exe.

Теперь я просто запускаю SleepWin7.exe, чтобы перевести мой компьютер в гибридный сон.

Вы можете удалить AutoHotKey, если это все, что вам нужно.

Обновление. Вышеупомянутое решение не работает, когда пользователь не вошел в систему, то есть Windows 7 Login Screen. (Мой компьютер просыпается в 4 утра каждое воскресенье, чтобы выполнять еженедельное резервное копирование, которое выполняется без входа пользователя.) В этом случае Wizmo по-прежнему работает:

Надеюсь, вы найдете их полезными.

Выключение %windir%System32shutdown.exe -s

Перезагрузка %windir%System32shutdown.exe -r

Выход из системы %windir%System32shutdown.exe -l

Ожидание %windir%System32
undll32.exe powrprof.dll,SetSuspendState Standby

Hibernate %windir%System32
undll32.exe powrprof.dll,SetSuspendState Hibernate

Предостережение: rundll32.exe не следует использовать для запуска powerprof.dll . Вместо этого вы должны напрямую позвонить в SetSuspendState. Это можно сделать с помощью Powershell — создать файл, например sleep.ps1, с содержимым ниже.

Затем запустите его, используя powershell -File C:your-pathsleep.ps1 . Сначала вам нужно запустить команду Set-ExecutionPolicy RemoteSigned , чтобы запустить сценарии powershell.

Приведенный выше сценарий вызывает системное приостановление, которое будет либо спящим, либо спящим в зависимости от текущей настройки спящего режима. Чтобы изменить этот параметр из командной строки, запустите powercfg -h off (или on ) из командной строки как администратор.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.