Программы-планировщики
Лень — двигатель прогресса
Как много полезных вещей делает человек, какие усилия прикладывает, сколько времени затрачивает только для того, чтобы впоследствии можно было бы хоть немного полентяйничать, посачковать, пошлангировать. До сих пор я с содроганием вспоминаю, сколько сил в молодости было потрачено на создание всяческих хитроумных приспособлений для дистанционного переключения каналов на отечественном телевизоре марки «Рубин», более похожем на гроб с окном, чем на продукт радиоэлектронной промышленности. И хотя тогда, как и сейчас, смотреть на переполненном неприкрытой пропагандой «голубом экране» было практически нечего, тем не менее, такая скучная процедура, как поднятие собственной любимой задницы с не менее любимого мягкого кресла и поход к телевизору для нажатия одной единственной кнопки, мне всегда казалась непозволительной растратой умственной и физической энергии. Вот месяцами заниматься распайкой самодельного ДУ для него — это более занимательно, времени на это занятие жалко не было. Какое счастье, что теперь у всех есть ставшие нормой пульты дистанционного управления ко всему, вплоть до дверей гаража! Но молодёжь, наверное, меня уже не поймёт…
Для нормального человека лень, мне думается — совершенно нормальное явление, подвигающее его на всевозможные изобретения и выдумывание новых небывалых механизмов. Конечно, не вульгарное, известное на Руси с древности полёживание на печи с вытекающим из этого поплёвыванием в потолок — всё-таки мы говорим о нормальных людях, а нежелание выполнять нудные рутинные операции, которые при некоторой сноровке и наличии соответствующих технологий почти всегда можно автоматизировать или хотя бы серьёзно упростить. Именно благодаря такой вот положительной во всех отношениях лени, думается мне, и появились всяческие станки с ЧПУ, микроволновые печи, программируемые стиральные машины, посудомоечные агрегаты и те самые пульты ДУ — все они, начиная от промышленных роботов и заканчивая бытовыми электрочайниками, призваны облегчить существование человека, избавляя его от повторяющихся действий и, соответственно, повышая производительность каждой минуты его рабочего времени или просто эффективность и насыщенность самой жизни. Природа у человека такая. Вряд ли кому-то нравится восемь часов в день крутить одну и ту же гайку на конвейере — каждый предпочёл бы заниматься творческим или хотя бы неповторяющимся делом. Ведь от монотонных движений человек даже устаёт гораздо быстрее, чем от случайных и разнообразных. Поэтому и стремится он переложить на плечи машин и компьютеров то, что ему самому делать тяжело, неинтересно или попросту лень.
А теперь подумайте — как много однотипных операций вы выполняете каждый день или с какой-то другой периодичностью за компьютером? Например, грамотный пользователь, заботящийся о стабильности функционирования операционной системы, регулярно, по меньшей мере, раз в неделю проверяет диск на наличие ошибок, дефрагментирует его, выявляет среди полученных из Сети файлов вирусы; интернет-маньяк каждый вечер запускает «звонилку», а после установки соединения — браузер, менеджер закачек, «аську», загружает на FTP-сервер обновлённую редакцию своей домашней веб-странички; деловой человек ежечасно скачивает электронную почту, просматривает определённые сайты на наличие новой информации — и таких повторяющихся задач у каждого накапливается очень и очень много. Сам собой напрашивается вопрос: почему бы не автоматизировать всё это малопродуктивное каждодневное нажатие одних и тех же кнопок, запуск одних и тех же приложений? Пусть компьютер всё это делает самостоятельно — человеческого разума здесь не требуется! Тем более, что, например, на обслуживание системы порой уходит не один десяток минут — сначала надо дождаться окончания работы «скандиска», потом — дефрагментатора и так далее. Причём никаких других задач в это время на многозадачной Windows выполнять нельзя, иначе проверка диска войдёт в бесконечный цикл из-за того, что другое приложение пытается параллельно на него что-то записывать. Вот и приходится пользователю таращить глаза на экран монитора, ожидая завершения работы каждой системной утилиты, после чего запускать следующую. Нет, на самом деле чаще всего не приходится… На самом деле рядовой пользователь обычно просто забивает на обслуживание системы и ждёт того момента, когда «глюки» станут нестерпимыми и можно будет с чистой совестью набрать команду FORMAT C:
, после чего переустановить ОС и ждать очередной её кончины. Тратить полчаса в день на обслуживание системы нам лень… Но это не та лень — она приводит не к созиданию, а к разрушению ОС и деградации самого пользователя, не видящего дальше своих спинномозговых «квейков» и околокроватных чатов. Немногие же индивидуумы с завидной стойкостью поддерживают работоспособность Windows, тратя на это немало своего личного времени. Хотя, если у тебя на диске ценного только «Квак» и «аська», то выделить час-два на переустановку «заглючившей» системы и пары-тройки игр действительно может оказаться более целесообразно, чем тратить этот час каждую неделю на её обслуживание. Но вот если программ не один десяток, да драйвера к устройствам требуют специальной установки и настройки, то волей-неволей приходится поддерживать неустойчивую стабильность Windows. Да и неприятный сюрприз в виде осыпавшегося бэд-блоками винчестера лучше предотвратить и предугадать заранее, чем рвать волосы и посыпать голову пеплом после того, как это уже случится. Очень хороший вариант — периодически (опять!!!) делать резервную копию диска с помощью программы типа Norton Ghost [1], тогда профилактикой сбоев в какой-то мере можно пожертвовать, но ведь дело ограничивается не только обслуживанием ОС — рутинных операций при работе за ПК немало и помимо этого. И каждая требует время, время и время… Просто забота о системе — один из самых ярких и применимых к каждому ПК примеров. Как автоматизировать этот процесс? Как сделать так, чтобы компьютер сам себя проверял и лечил, запуская, к примеру, каждую ночь полный набор диагностических утилит, а после завершения проверки генерировал отчёт и погружался в спячку?
Task Sheduler
Есть же «Виндовый» Планировщик заданий (Task Sheduler) и его дочернее узкоспециализированное приложение «Мастер обслуживания» (Maintenance Wizard)! — скажет продвинутый пользователь. Но пробовали ли вы с ними работать? Если пробовали, то хорошо знаете, что работать с ними невозможно — слишком примитивные это программы. Например, они не способны корректно закрыть отработавшее приложение — запрограммировать можно только снятие задачи в опредёленное время. Разумеется, если дефрагментатор в этот момент всё ещё работает, то он будет убит, не выполнив своей работы, а то и попортив таблицу FAT на диске. Нет у них обратной связи с запущенными программами. Для начинающего пользователя, конечно, чем проще программа, чем меньше в ней настроек и возможностей, тем лучше, но такой подход, думаю, применим к американским домохозяйкам, а не к российским «юзверям», самым юзверятым «юзверям» в мире. Кроме того, программа эта выполняет свои обязанности исходя из расположения звезд на небе и собственного настроения — при этом в отчёте о проделанной работе она может записать, что все задания выполнены и ПК выключен, на деле же это окажется, мягко говоря, преувеличением. В общем, утилита эта годится только на крайний случай, когда нет возможности скачать из Сети действительно мощный планировщик с набором функций, соответствующим требованиям сегодняшнего времени всеобщей компьютерной продвинутости.
Automate [2]
А качественные планировщики заданий есть! На сегодня Automate — одна из самых мощных (если не самая) программ-шедулеров, близкая к эталону подобных утилит. Тот, кто попробует с ней хоть раз поработать, больше никогда не вспомнит добрым словом «виндовый» планировщик. Причём, наряду с её огромными возможностями, разработчикам Automate удалось добиться и лёгкости управления сложной программой, её настройки и создания новых заданий. Достигается это наличием удобного мастера Task Wizard, доводящего планирование заданий до визуального уровня — вся, очень близкая к программированию работа может выполняться исключительно мышкой. Плюс ко всему, изначально в программу включён десяток готовых простых примеров-заданий, наглядно демонстрирующих основные принципы работы с Automate. Если же всё равно остались какие-то вопросы, то к вашим услугам очень подробная справка к программе, которая популярно объясняет все термины и опции Automate — её, вообще говоря, желательно в любом случае хотя бы просмотреть, иначе многие уникальные особенности этого планировщика от вас могут попросту ускользнуть.
Итак, что же умеет эта программа? Разумеется, запускать приложения по расписанию, как и «виндовый» Task Sheduler. Но если у последнего этим дело и ограничивается, то Automate способна ещё и открывать документы, распечатывать их, генерировать визуальные и звуковые сообщения для пользователя, нажимать (виртуально) клавиши на клавиатуре и мыши, двигать курсор в любую точку экрана, оперировать с любым окном, устанавливать соединение с Интернетом, открывать веб-страницы, работать с электронной почтой и FTP-серверами, производить любые операции с файлами и папками, архивировать и распаковывать ZIP-файлы, работать с буфером обмена, перезагружать и выключать компьютер, блокировать клавиатуру и мышь и ещё много и много других вещей — практически всё, что способен делать на компьютере сам оператор. Для особенно дотошных кул-хацкеров имеется поддержка языка программирования Visual Basic for Applications, вернее, совместимого с ним и почти ничем не отличающегося WinWrap Basic, подробнейшая инструкция по применению которого приводится в файле refman.rtf
.
Возможности программы почти безграничны, но именно это обычно и отталкивает рядовых пользователей от мощных программ: «в планировщике что-то программировать надо…». За кажущейся на первый взгляд сложностью они просто не успевают оценить приятную лёгкость управления, тем более, что с английским языком немалая их часть не в ладах. На самом же деле в программировании «шедулера» ничего трудного нет, и поскольку Automate — программа чрезвычайно удачная, то на её примере попробуем рассмотреть создание самого востребованного у пользователей задания — регулярного автоматического обслуживания системы. Что для этого требуется? Нужно обеспечить поочерёдный запуск нескольких приложений, причём каждое должно полностью отработать, затем быть выгружено, и только после этого можно запускать следующее.
Начнём! В меню «File» выбираем команду «New» → «Task» и в появившемся окне «Task Wizard» — Мастера заданий — жмём кнопки «Next» → «Create Steps». Перед нами окно пошагового строителя Step Builder — именно в нём осуществляется практически весь процесс планирования. Пусть первым будет запуск утилиты проверки и резервирования реестра: в разделе «General» колонки со списком доступных действий «Available Actions» двойным щелчком выбираем пункт «Start Application». Появится очередное окно, в котором необходимо задать путь («Command Line») к исполнимому файлу нашего сканера реестра. В данном случае нас интересует его windows-вариация, так что получится C:\Windows\
. Проверим что получилось, нажав кнопку «Test Selected Step» в правом верхнем углу панели инструментов программы. Запустится Scanregw.exe
, проведёт проверку и выдаст окно с вопросом: резервировать ли реестр? Теперь надо научить Automate на этот вопрос отвечать, нажав в новом окне кнопку «Yes». Запишите название этого окна: «Registry Scan Results» (в английской версии Windows) — именно на него будет реагировать Automate. Снова возвращаемся к редактированию задания и в разделе «Flow Control» выбираем следующее действие — «Wait For a Window». То есть после первого шага — запуска программы, вторым будет ожидание появления окна «Registry Scan Results» — пока его на экране нет, кнопки жать бессмысленно. Это название необходимо ввести в окне установки параметров действия «Wait For a Window» в поле «For this window appear», а в пункте «Wait for» установить время ожидания. Поскольку в зависимости от размера реестра и быстродействия компьютера время сканирования реестра может различаться, то выявить его нужно экспериментальным путём — главное, чтобы установленное вами время не было меньше реального, иначе Automate данный шаг не выполнит. После того как окно «Registry Scan Results» появилось, надо нажать на клавиатуре клавишу Y для того, чтобы сканер продолжил работу — это третий шаг. Для этого выбираем раздел «Keystrokes» и в нём — «Send Keystrokes». Остаётся только задать клавишу Y в окне установки параметров этого шага. Опять проверка всех созданных шагов: Scanregw
отработал, резервную копию реестра создал, Automate, дождавшись нужного окна, кнопку нажал, но появилось ещё одно окно — с единственной кнопкой «OK». В данном случае, поскольку название этого окна такое же, как уже имеющегося на экране окна Windows Registry Checker, то Automate на его появление не среагирует, поэтому проще всего просто задать небольшую паузу перед нажатием кнопки «OK». Четвёртым этапом выполняем — «Flow Control» → «Pause» → «10 секунд». Этого времени достаточно для резервирования реестра. И, наконец, после этой паузы нажатие кнопки «OK» в последнем окне — пятый шаг: «Keystrokes» → «Send Keystrokes» → «Insert» → «Enter». Запускаем проверку и радуемся результату — Automate вместо пользователя полностью самостоятельно вёл диалог с Windows Registry Checker.
Это был пример самого простейшего программирования задания, но на самом деле его можно было бы ещё упростить аж до двух шагов, если знать параметры командной строки запускаемого приложения. Вернёмся к пункту «Start Application»: в окне параметров запускаемого приложения имеется и ещё несколько полей для ввода, одно из которых — «Parameters» — как раз и служит для ввода ключей командной строки. К сожалению, в эпоху всеобщей виндовизации командная строка практически позабыта. А между тем она очень сильно облегчает нашу сегодняшнюю задачу. Так, у программы Scanregw.exe
имеется ключ /backup
, который однозначно приказывает ей сделать резервную копию реестра, причём никаких окон при этом даже не появляется — программа отрабатывает в скрытом режиме. Единственный недостаток этого параметра в том, что не проводится проверка реестра. Так что выбирайте — либо вышеописанная процедура, либо всего два шага — запуск Scanregw.exe /backup
и последующая пауза секунд на 15 для записи архива с файлами реестра на диск.
Аналогично через команды-переключатели следующим заданием нашего проекта мы можем заставить Scandisk
без диалога с пользователем проверить все диски, исправить ошибки и самостоятельно выгрузиться из памяти ПК по завершении своей работы. Конечно, поскольку Automate заменяет человека, то она опять-таки сама может отвечать на все запросы Scandisk
, так что знание переключателей командной строки не так уж и нужно, но с ними всё получается и проще, и грамотнее, и быстрее. Поэтому в случае со Scandisk
вводим в строку «Parameters» следующее: /a /n /silent
. Параметр /a
устанавливает проверку всех дисков, /n
— запуск проверки сразу после загрузки программы без запроса каких-либо параметров, silent
— отсутствие отчётов о результатах проверки и автоматическая выгрузка программы по окончании проверки дисков без обращения к пользователю. Учтите только, что в настройках Scandisk
должен быть установлен флажок «Automatically fix errors», иначе при обнаружении ошибок на диске программа будет выдавать запросы, обработку которых в Automate запрограммировать непросто из-за многочисленности их разновидностей. Для дефрагментатора C:\WINDOWS\
командная строка будет вида /ALL /F /NOPROMPT
, где /ALL
— обработка всех дисков, /F
— дефрагментация файлов и свободного пространства, /NOPROMPT
— отсутствие запросов к пользователю. Кстати, дефрагментатор и ScanDisk
в Windows 98 лучше всего использовать не «родные», а из «Миллениума» — там эти программы заметно усовершенствованы и работают гораздо быстрее.
К сожалению, не все программы имеют переключатели командной строки, упрощающие настройку их работы, но это не так уж и важно — Automate, как мы видели, позволяет включать в задание любую программу, надо просто чуть-чуть повозиться с отладкой шагов. Но в любом случае неплохо сначала из документации узнать параметры командной строки приложения, автозапуск которого вы планируете. Так, например, известный архиватор WinRAR легко с её помощью научить создавать резервную копию любой папки, что бывает очень полезно, особенно если оформить эту задачу как ежедневное задание Automate. Представьте себе: по окончании рабочего дня ПК сам архивирует ваши рабочие документы, устанавливает соединение с Интернетом и отправляет их на хранение на FTP-сервер или почтовый ящик, выделенный под это дело, после чего сам себя проверяет и обслуживает и выключается. А утром варит кофе…
Но продолжим: мы научили Automate запускать и выгружать все нужные нам программы и протестировали всё задание. Теперь, когда всё готово, закрываем окно Step Builder и в мастере заданий переходим ко второму этапу, называемому не очень понятно — Triggers. На самом деле обычно здесь всего лишь нужно задать расписание запуска нашего задания. Но способ запуска не ограничен лишь временным расписанием! Trigger — это не только срабатывание таймера, это любое событие из довольно обширного списка. Так, можно назначить горячую клавишу каждому из созданных заданий, можно сделать так, что задание запустится вместе со скрин-сейвером или на старте Windows, или же когда изменится определённый файл, либо когда на экране откроется какое-то заранее заданное окно. Последнее, кстати говоря, очень удобно использовать при дозвоне провайдеру по принципу Call Back, поскольку при этом Windows 9x непременно выводит раздражающее окно с кнопкой «OK», для подтверждения пользователем входящего соединения. Стоит лишь задать Automate отслеживать появление этого окна и научить её нажимать эту кнопку, как ещё одна скучная операция выпадет из круга обязанностей пользователя. И что самое главное! Триггеров на одно задание допускается делать несколько, например, и запуск по расписанию и горячие клавиши одновременно. Даже ярлык на Рабочем столе для запуска комплексного задания, будто оно — одно цельное приложение, программа умеет создавать! Твори — не хочу!
Вот, собственно, и всё — осталось придумать проекту название, и дело сделано. Как видите, всё гораздо проще, чем казалось вначале. Двадцать минут несложного визуального программирования теперь будут спасать целые часы рабочего времени каждый день. Плюс ко всему, не надо беспокоиться о том, что вы что-то забыли сделать — компьютер склерозом не страдает.
Macro Scheduler [3]
Но если вам Automate чем-то не угодил или просто не понравился, то всегда есть шанс найти не менее мощное аналогичное приложение, например, такое, как Macro Scheduler. Принципы программирования во всех шедулерах примерно одинаковы, распространяться тут особенно нечего, различается только интерфейс, и, к сожалению, у Macro Scheduler он явно подкачал по части привлекательности. Но по одёжке, как говорится, встречают — возможности программы почти ничем не уступают более известному Automate, разве что триггеров всего два — таймер и горячие клавиши. Сам же скрипт запуска приложений можно создавать даже более сложный — с ветвлениями и условиями! Плюс полный набор операций с файлами и папками, не говоря уж о стандартных запуске и закрытии приложений — Macro Scheduler умеет всё, что только приходит на ум. Причём для написания скрипта не нужно быть гением в бейсикоподобных языках — все операции планирования задания производятся исключительно мышкой. Возможно, кому-то покажется даже более удобным проверенный временем способ выбора каждой команды — через раскрывающийся список «Command», ниже которого расположено поля для ввода параметров текущей команды. Названия же каждой команды вполне осмысленны и не вызывают желания общаться со справочной документацией. То есть, выбрав однозначно понятную команду «DeleteFile» в поле «Value», нужно задать путь к этому файлу, и при выполнении задания он будет удалён — всё просто. Для более же тонкой отладки созданной программы имеется редактор типа Блокнота, где весь написанный вами скрипт представлен в виде обычного текста с цветовой подсветкой команд разного типа, очень похожей на то, что весьма популярно в чисто «программерских» редакторах. Если накопится много заданий, то будет полезно сгруппировать их по нескольким разделам, дабы в окне программы они не были свалены в одну кучу. Для особо же востребованных задач лучше всего создать ещё и ярлыки на Рабочем столе, тогда для их запуска будет достаточно всего одного ленивого щелчка мыши. Короче говоря, программа эта очень интересная и качественная, но к счастью, и кроме Macro Scheduler ассортимент планировщиков заданий, с которыми «виндовый» Task Scheduler и близко не стоял, не ограничен.
Schedule Wizard 2001 [4]
У каждой программы имеются и свои уникальные изюминки, отсутствующие у конкурентов, и досадные недостатки, часто обусловленные этими же самыми достоинствами. Schedule Wizard — самая простая программа, идеально подходящая для начинающих. Он рассчитан в основном на запуск программ и обработку поступающих от них сообщений, благодаря чему работа с ним оказывается предельно простой и интуитивно понятной. И хотя особых изысков у него не наблюдается, тем не менее, набор программируемых действий весьма широк и охватывает почти все потребности большинства пользователей — нажатие клавиш, выдача сообщений, операции с файлами, работа с Интернетом, упаковка-распаковка архивов, циклы, условия и ветвления. Но вот по части способов запуска готового скрипта выбор гораздо хуже, вернее, его нет совсем — только таймер. На горячие клавиши, правда, тоже можно программировать какие-либо действия, но с уже созданными заданиями это почему-то никак не связано. Лёгкость же программирования в Schedule Wizard объясняется тем, что по сути, в программе имеется пять раздельных мастеров создания заданий, предназначенных для быстрого планирования наиболее часто встречающихся скриптов — Program Wizard, Message Wizard, Script Wizard, E-Mail Wizard, Hot Key Wizard. Это задумано для упрощения работы с программой и действительно сильно помогает: например, запланировать регулярную пересылку постоянно редактируемого файла своему партнёру с помощью специально для этого предназначенного Message Wizard можно буквально за две минуты. Да и всяческие напоминалки о днях рождения, важных событиях и назначенных встречах, пьянках и свиданках делаются в несколько нажатий мыши, но уже в Message Wizard. Получается что-то типа нескольких специализированных подпрограмм внутри единого интерфейса. Для ещё большего упрощения работы с Schedule Wizard имеется уже готовый набор типичных скриптов, таких как запуск дефрагментатора и его закрытие через 60 минут или соединение с Интернетом, но большей частью это довольно примитивные программы, для грамотного пользователя не представляющие большой практической ценности (закрытие дефрагментатора через час его работы умеет делать и Task Sheduler). Так что, если вы только пробуете свои силы, или лень-матушка не прошла ещё в своем развитии в стадию созидательной, то начните с Schedule Wizard — это самый быстрый и доступный планировщик.
Благодаря незаслуженно обделённому вниманием пользователей целому классу программ — «шедулеров», любой просиживающий штаны перед монитором юзер имеет неплохой шанс избавиться от рутинных операций и сберечь для себя и своих близких немного свободного времени, распорядиться которым можно с куда большей пользой, чем нажимать одни и те же кнопки изо дня в день. Ведь аналогично тому, как осуществляется программирование комплексного обслуживания операционной системы, можно автоматизировать и любые другие задачи, главное, чтобы было не лень разобраться с работой продвинутых планировщиков — потраченное на это время с лихвой окупится. Зато потом предаться лени можно будет на всю катушку: персональный компьютер будет всё делать за вас, для чего, собственно, он и был придуман шлангами из Apple. При желании, думаю, можно добиться автоматического истребления ботов в «кваке» и любовной переписки с девчонками на «Кроватке» (но зачем тогда компьютер нужен — вот вопрос?).