Комментарии 43
зачем это здесь?
я такое писал еще в 2010 когда в школе учился
разве такую мелочь нельзя просто нагуглить?
зачем статья?
Для этой же функции научил умную колонку с Алисой через Home Assistant посылать через SSH команду на переход компьютера в спящий режим. Конечно, чуть посложнее вышло, чем 2 строчки кода, но управлять голосом домом бесценно.
timeout /t 3600 /nobreak
Автор открыл для себя волшебный мир командной строки, не судите строго.
Дальше пойдёт речь про батники в три строки.
О как… До winxp была команда choice, которую они зачем-то убрали (видимо, решили, что set /p + ping localhost (ms официально рекомендовала так делать задержку) достаточно, но не учли большей интерактивности choice). А когда появилась команда timeout?
того программа заняла 73 байт:
На чём она была написана уже и не помню (VC, VB, Delphi или Assembler). Размер ее был тоже не большим, но все же 16 166 против 47 байт не идут ни в какое сравнение.
Эм-м автор сравнивает объем бинарника и объем скрипта, который вызывает другие бинарники?

Я в 2006\8 решал другую задачу (гораздо более интересную), как программно будить ПК в заданное время — обычный будильник. Но на тот момент весь интернет полнился «такое невозможно»,«как вы себе это представляете»
Планирую на определенное время проигрывание определенной песни.
shutdown /t 1200 /f /h
Гибернация через 1200 секунд. 22 байта занимает строка.
А если я хочу пойти спать раньше, чем настроена задача в планировщике, то надо обязательно сидеть её ждать?
Задача автора статьи — перед тем как ложиться спать запустить команду, которая выключит компьютер через 20 минут. Чтобы радио перестало играть через 20 минут, а не, скажем, через 2 часа.
Сегодня автор ложится в 22.15, завтра в 23.55, послезавтра в 23.01
Вы предлагаете вместо запуска батника дабл кликом каждый раз заходить в планировщик и менять время запуска задачи? (я в курсе, что можно батник из планировщика запустить, но зачем тогда в этом сценарии вообще планировщик?)
Задача автора статьи — перед тем как ложиться спать запустить команду, которая выключитЭто не задача, а решение. А задача чтобы компьютер был выключен когда за ним уже нет пользователя, плюс предположение в ветке комментариев что пользователь уходит спать.
Вы предлагаете вместо запуска батника дабл кликом каждый раз заходить в планировщик и менять время запуска задачи?Никто такого не предлагал, да и зачем? Если пользователь в среднем уходит спать в 11, то компьютер пусть выключается 11.20, чтобы не работал ночью. Все. Пользователю нужно совершать 0 кликов. Кому вообще нужно отсчитывать ровно 20 минут с момента как идешь спать, и зачем?
плюс предпоожение в ветке комментариев что пользователь уходит спать.Это написано прямым текстом в статье. Автор включает радио, чтобы послушать перед сном.
Если пользователь в среднем уходит спать в 11, то компьютер пусть выключается 11.20, чтобы не работал ночью. Все. Кому вообще нужно отсчитывать ровно 20 минут с момента как идешь спать, и зачем?Эта функция реализована в разных плейерах в мобильном — выключать воспроизведение после N минут неактивности.
Вы никогда ничего не слушали на ночь? Я бывает слушаю подкасты. Использую данную функцию очень часто. Сценарий «в среднем в 23.00» тут вообще не подходит.
Если я сегодня лёг в 23.19, то любимый подкаст буду слушать всего одну минуту? Я не успею заснуть за минуту.
Если я завтра лягу в 22.01, то хочу, чтобы подкаст меня случайно не разбудил в 22.50, когда буду на другой бок переворачиваться. Поэтому нужно, чтобы в 22.50 воспроизведение уже было выключено.
Если «в среднем» я засыпаю за 15 минут, то я хочу отсчитывать 15 минут от момента, когда я включил воспроизведение, а не от заданного времени в планировщике.
Эта функция реализована в разных плейерах в мобильном — выключать воспроизведение после N минут неактивностиВыключение после неактивности и активного действия это немного разные фичи.
Вы никогда ничего не слушали на ночь?То что я слушаю (независимо от времени суток) я выключаю сам, когда заканчиваю слушать. Я либо еще хочу чтобы что-то играло, либо уже не хочу, причем первый период сознательный, и завершающее действие в него хорошо вписывается. Решительно не понимаю, зачем пытаться отмерять 20 минут и затем подпирать все это костылями.
Если «в среднем» я засыпаю за 15 минутЭто среднее время засыпания ничуть не точнее среднего времени ухода спать. Сегодня вы устали и заснули за 5 минут, и вас будит ваш подкаст «пока вы переворачиваетесь на другой бок», а завтра встанете лишний раз попить воды, отвлечетесь на разговор у холодильника, и будет уже 20, и фактически ложиться вы будете уже в тишине.
Выключение после неактивности и активного действия это немного разные фичи.Автор эмулирует неактивность с помощью банального таймаута.
То что я слушаю (независимо от времени суток) я выключаю сам, когда заканчиваю слушать. Я либо еще хочу чтобы что-то играло, либо уже не хочу, причем первый период сознательный, и завершающее действие в него хорошо вписывается.Все люди разные. Кто-то любит засыпать под бубнёж и не хочет «просыпаться», чтобы его выключить.
Это среднее время засыпания ничуть не точнее среднего времени ухода спать.Вот это не совсем понял.
Если просто перевернулся на другой бок и при этом проснулся — желательно, чтобы было темно и тихо, тогда сразу же снова усну.
А вот если встал в туалет или попить воды, и при этом еще и поговорил с кем-то, то можно и вообще до утра не уснуть потом…
При таком раскладе можно снова захотеть подкаст послушать, чтобы под него заснуть. Как в этом случае справится планировщик — непонятно.
А вот таймер выключения справится прекрасно.
Автор эмулирует неактивность с помощью банального таймаута.Автор ничего не эмулирует. Фишка «выключения после неактивности» в том что ослеживается активность и таймер обновляется. У автора ничего не отслеживается и не обновляется.
Кто-то любит засыпать под бубнёж и не хочет «просыпаться», чтобы его выключить.Правильное решение такого кейса как раз отслеживание неактивности плеером, причем на телефоне, к которому не нужно будет вставать если не успел заснуть.
Если просто перевернулся на другой бок и при этом проснулся — желательно, чтобы было темно и тихо, тогда сразу же снова усну.Ну так оно не тихо, потому что таймер стоит на 15 минут, а заснули вы за 5. А еще через пять перевернулись на другой бок.
А вот таймер выключения справится прекрасно.Ну да, надо всего лишь подойти к компу, включить его, включить проигрывание, и заново запустить батник. Именно то чем хочет заниматься человек, который собирается лечь спать со второй попытки.
Изначальный комментарий, на который я отвечал -«Автор, изучи Планировщик заданий, пожалуйста».
Я считаю, что планировщик не подходит для решения задачи автора.
Сценарий 1. Выключать компьютер каждый день в 23:00, вне зависимости от активности на нём. Использование планировщика я считаю хорошим решением.
Сценарий 2 (от автора статьи). Выключать компьютер через 20 минут после того, как отошёл от него, вне зависимости от времени суток, может быть утром, вечером, днём ночью.
В данном случае, я считаю, что планировщик не подходит совершенно, а батник позволяет эту задачу решить.
Остальное, обсуждаемое выше, вроде
— оптимальности написания батника
— использования компьютера, а не мобильного телефона или плейера
— умного алгоритма отслеживания активности
— нормализации графика сна
мне обсуждать не интересно.
Мой поинт был «в сценарии автора статьи планировщик задач не применим, так как батник НЕ запускается по расписанию». Всё.
Засим откланиваюсь.
А можно еще ложиться всегда строго в определённое время!
Итого программа заняла 73 байт
На самом деле… ноль?

Кстати, а почему ноль, а не один кластер?
Не очень хорошо понимаю, зачем вообще выключать компьютер? Это ж потом опять запускать все программы, визуальные студии, браузёры с сотней вкладок, блокноты, торренты, косынку, проигрывателей песен и фильмов. Наверное, нужно просто нагрузить жёсткий диск операциями, чтоб быстрее износился.
echo off
set /p xtime=«Через сколько минут выключить? Введите значение и нажмите Enter: „
set /a xtime=%xtime%*60
shutdown /s /t %xtime%
Но если Вам нужно именно выключить, то всё будет еще короче, а именно 47 байт. Просто вторая строка будет выглядеть:
shutdown -s -t 00
Зачем заменять вторую строку, если вы сами же в ней и указываете параметр -t. Просто укажите «shutdown -s -t 1200» без первой строки. Таким образом «программа» стала еще короче.
«На сон грядущий» или таймер выключения Windows из командной строки