Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование для начинающих #25


Служба Рассылок Subscribe.Ru

Программирование для начинающих

Выпуск 25

10 OCT 2001

 
 
 
Ведущий рассылки: Вячеслав Мацнев
e-mail: stac@stacmv.net
Приветствую вас, уважаемые!

В этом выпуске читайте:

ОТСЕБЯТИНА

Сегодня я хочу сказать слово о прогрессе.

Короче, куда катится этот мир? Да, этот, в котором мы с вами живем. Почитав недавно немного компьютерной прессы, я ничуть не удивился, увидев там материалы об очередной модели процессора, очередном северном мосте, вкупе с южным, об очередной версии всеми любимой ОС. Да и чему тут удивляться? Все эти чудесные новинки, ведь, призваны несказанно облегчить нашу, ну очень сложную, пользовательскую жизнь, а особенно мою (о чем авторы говорят особо :). Говорят, в частности, что скоро я смогу общаться со своим компьютером посредством голоса, а он будет в совершенно реальном (чисто конкретном) времени меня понимать и выполнять мои команды!

Может вы уже уловили иронию в моих словах и задались вопросом, чего, мол, здесь плохого, в прогрессе в этом и вообще?

Да, не знаю. Вроде (кажется) все нормально. У нас появляются новые безграничные возможности и пр. А, вот, что делать со старыми? Да и польза от всяких нововведений часто довольно сомнительна.

Возьмем то же голосовое управление. Скажите, вы пробовали управлять компьютером с помощью голоса (эта возможность появилась уже давно)? Я пробовал. Очень весело. Впервые со мной это случилось году, этак в 95-м. Была у меня программка Voice Pilot, работающая под Win 3.1. Причем, скажу вам, неплохо работающая.

Бывало, подойду к компьютеру и скажу ему "Нортон", и, бац!, запускается Norton Comander (тогда я им еще пользовался). "Вверх", "Энтер","Вниз", "Энтер" - комп перемещает указатель вверх-вниз, входит-выходит из каталогов, запускает файлы. Волшебно!

Кстати команды распознавались довольно неплохо, лучше чем у других аналогичных программ, опробованных мной позже.

В моем компьютере стоял тогда 486-й процессор от AMD. И никой 10-гигагерцовый Pentium был не нужен.

Кстати о "четверках", AMD сняла их с производства совсем недавно (судя по публикациям, этим летом), но заказы на них будут приниматься где-то до 2002 года.

Кто-то скажет, что та моя "четверка" не могла писать под диктовку и вести со мной диалог. Но это и к лучшему. С Voice Pilot я играл, наверное, неделю, не больше. Как долго я смог бы терпеть говорящего "интеллектуального" помощника, не знаю, но не больше той же недели.

Представьте, что ваш компьютер управляется голосом. Просто представьте. Ну что, понравилось? Давайте я тоже представлю...

"Нортон" - "На данном компьютере инсталлированы Norton Comander, Norton Utilities, Norton Antivirus, Norton Guide. Уточни запрос." - "Нортон Командэр" - "Какая версия: 4.0, 5.0?" - "4" - "Norton Comander 4.0 не установлен. Установить?"

По-моему, проще нажать "Ctrl-Alt-N" или другую установленную комбинацию клавиш.

Вы скажете, что я утрирую? Нет, не скажите, вы поняли, что я хотел сказать. И многие, я думаю, разделяют мое мнение.

Да и шут с ним, с голосовым управлением, я хочу сказать, что прогресс прогрессу, конечно, рознь. Но в последнее время нам очень часто впаривают всякую фигню и говорят, что это хорошо.

Недавно прочел обзор новых скоростных CD рекордеров. История с ними, похоже, повторяет историю с обычными CD-ROM дисководами. Скорость растет, но растет и шум, а качество иногда даже падает.

"Компакт диск на этом приводе пишется за 7 минут. Среди недостатков стоит отметить сильный шум и большую загрузку процессора (во время записи даже мышка тормозит). Тестируя дисковод мы не испортили ни одной "болванки", но WinOnCD несколько раз выдавал сообщения, что "энное" количество ошибок было исправлено с помощью BurnProof... ... но в целом привод оставил хорошее впечатление ..."

Примерно такими словами был описан CD рекордер, пишущий на 20-й скорости.

Кошмар. Читаю и думаю, что за бред написан, как такое вообще может быть? Кому может понадобиться такое барахло? Мой 8-скоростной "Митсумик" пишет "болванку" за 9-10 минут. Шума от него не дождешься (ну, это понятно, 8-я скорость, не 20-я). И комп не тормозит, в не критических случаях я даже слушаю MP3 музыку во время записи. "Не критический случай" это когда, например, не приходится на лету декодировать mp3 при записи AudioCD. Да, ни одной "болванки" я еще не испортил. Правда я не все пока возможности рекордера испытал, но все же...

Да и брал я свой Mitsumi за $99, а то "чудо" техники предлагают за $210.

Грустно становится от всего этого. А, ведь, кто-то прочитает обзор и побежит в магазин...

Аналогичная ситуация и в области software. За примером далеко ходить не надо. Про Windows XP слыхали? Сам я пока этой штуки не видел, как и Windows Me, признаюсь. Но пишут про нее и пишут не мало.

Иногда хочется, попробовать новую ОС, но вовремя останавливаю себя: зачем??? Чем она лучше предыдущих?

Надежность? "Новая версия еще надежнее, чем предыдущие!" Еще? Неужели, еще надежнее? Что же такое надежность, тогда вообще?

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

Казалось бы, все мы берем Windows в одном месте (ну, в одном, что смешного?). По идее она у всех одинаковая, глючная - не глючная, но одинаковая. Почему-то у одних все работает нормально, а у других нет. Ах, да у всех же разное "железо". Не хотят отставать от прогресса товарищи, покупают всякий металлолом, не подумавши или просто по глупости, вот и приходится им потом искать новую еще более стабильную и надежную ОС. А Билл Гейтс и рад, выдавая каждые несколько лет новую версию своей операционки. Причем, я слышал, что XP последняя в серии Windows. Кто-нибудь в это верит?

Складывается впечатление, что двигатель прогресса это не лень, как говорят, а глупость.

Предыдущая инсталляция Windows 98SE проработала у меня год и проработала бы еще, если бы мне не захотелось узнать, не будет ли у меня проблем с ее установкой. Дело в том, я купил новый винт, и мне было лень устанавливать на него Windows, поэтому я просто скопировал ее со старого винта. А недели две назад все-таки переустановил.

И никаких особенных глюков не наблюдалось.

Нет, апгрейд операционной системы, конечно, оправдан, но не во всех случаях. Лично для себя я таких оправданий сейчас придумать не могу. Хотя раньше мог. Когда старая ОС не работает на новом оборудовании, приходится искать новую ОС. И здесь нет противоречия с моими словами насчет металлолома. Дело в том, что на металлоломе все работает, но не всегда надежно (понимайте это, как хотите), а бывают случаи, когда ОС с оборудованием не работает вообще никак.

Никто не будет ругать Windows 3.1 за то, что в ней не работает USB сканер...

Ладно, подведу итог. Сейчас идет некая "гонка вооружений" среди производителей. Естественно, всем хочется кушать. Но нам, потребителям, не стоит поддаваться (слишком часто) на уверения производителей, что их новые разработки прогрессивны. Потому что этот их прогресс зачастую "липовый" и не несет ничего, кроме необходимости покупки очередной прогрессивной феньки.

ОТСЕБЯТИНА 2 .::. Информация

Друзья, есть несколько более серьезных вещей, которые мне нужно вам сказать, поэтому я отделил их от того бреда на тему прогресса.

Во-первых, оказывается, что сайт рассылки давно не обновлялся. Я пока все еще не имею регулярного доступа к Сети, а мой друг (Cobra), обновлявший сайт ранее, сообщил, что последнее время было не возможно соединиться с newmail'ом по ftp.

Было принято решение переселить пока сайт в другое место, а именно на http://stacmv.boom.ru .

Сайт по адресу http://stacmv.nm.ru продолжает работать, но пока обновляться не будет.

Во-вторых, размер zip-файла со всеми выпусками рассылки уже превысил 300Кб. Я решил разбить все выпуски на несколько файлов, так чтобы каждый из них не превышал 300Кб.

Мне, кажется, так будет лучше. Чем меньше файл, тем быстрее он скачивается (и закачивается на сервер). Кроме того, при получении файла по email через службу WWW4Mail файл не будет разбиваться на части и, соответственно, его не нужно будет собирать при получении.

Осталось только спросить у вас, правильное ли решение я принял, может кто-то предложит лучший вариант?

В-третьих, у рассылки постоянно появляются новые подписчики, которые почти одновременно читают как старые выпуски из архива, так и свежие выпуски. При этом у многих из них создается впечатление, что они опаздывают и должны догнать тех подписчиков, которые читают рассылку уже давно.

Меня часто спрашивают, надо ли выполнять домашние задания опубликованные в ранних выпусках рассылки и тому подобное.

Поэтому я должен прояснить эту ситуацию.

Есть курс "Программирование для начинающих" (http://stacmv.boom.ru). Общение студентов и преподавателей этого курса происходит посредством электронной почты, как в индивидуальном порядке, так и посредством этой рассылки.

Причем рассылка выходит с сервера Subscribe.ru и, следовательно, доступна всем желающим, а не только студентам курса.

И все могут читать рассылку и узнавать для себя что-нибудь новенькое, студенты курса, кроме того, могут или, скажем, должны выполнять установленные домашние задания.

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

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

Курс "Программирование для начинающих" не коммерческий, т.е. бесплатный, поэтому все желающие могут пополнить ряды его студентов. Информация о том, как это сделать имеется в Сети: http://stacmv.boom.ru/edu_idx.html.

Таким образом получается, что выполнять домашние задания надо (зачем же я их тогда придумывал?), попробуйте спросить у преподавателя ВУЗа или школы, надо ли Вам выполнять задания, если если их уже выполнили ваши старшие товарищи.

У нас, правда, в отличие от той же школы, выполнять задания можно когда угодно и как угодно долго. Главное, чтобы вы сами (ну и я, конечно) были довольны результатом. Занимайтесь, когда есть время, занимайтесь, когда есть желание.

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

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

И будет у нас свое средство обмена информацией, назовем его, скажем, "Рассылка "Вестник ПдН". Распространяться она будет двумя способами: 1) будет приходить на email участникам того или иного проекта, а также тем студентам, которые изъявят желание ее получать; 2)будет выходить с Subscribe.ru в качестве приложения к рассылке "Программирование для начинающих".

Вторым способом будут распространяться лишь выпуски содержащие интересную для большинства подписчиков информацию. Таким образом, информация о ходе работ над проектами будет доступна всем заинтересованным.

И последний вопрос - "мертвые души". Среди студентов курса есть граждане, которые не отвечают на мои письма (вплоть до того, что их адреса не существуют), некоторые даже не подтверждают свою регистрацию в качестве студентов.

Поэтому через несколько недель я проведу "зачистку". С одной стороны, мне выгодно поддерживать число студентов большим нуля. С другой стороны, пусть лучше студентов будет меньше, но они будут учиться.

Если вы зарегистрировались в качестве студента, но, по каким-то причинам, хотите отказаться от занятий, напишите мне об этом, мол, я, ник2 такой-то, уже стал программистом, и обучение на курсе "ПдН" для меня не целесообразно.

Пока все.

DOS .::. Командный язык DOS. BAT-файлы.

Пришлось внести поправки в программу изучения ДОС.

Причиной этому послужили некоторые вопросы подписчиков связанные с работой bat-файлов.

Отсюда я сделал вывод, что у подписчиков начинает проявляться интерес к командному языку ДОС и надо этот интерес в экстренном порядке поддержать и усилить.

Поэтому мы перескочим несколько тем, которые я хотел осветить ранее (вернемся к ним потом, если будет необходимость) и познакомимся с командным языком ДОС.

А знакомить нас с ним будет Константин Даниленко.


Константин Даниленко

BAT-файлы

Вначале о терминологии. Слово «batch» в переводе с английского означает «партия», «пакет», «группа». По поводу перевода термина «batch file» в литературе существует забавный, но временами вводящий в заблуждение разнобой. Приведем наиболее распространенные разночтения: «пакетный файл», «командный файл», «пакетный командный файл», «файл пакетной обработки». Все эти термины представляются неудачными, ибо слово «пакетный» может быть спутано с «пакетом прикладных программ», а «командный» – с СОМ-файлом. Есть и жаргонные синонимы – «бэтч» и «батник» (однажды я даже слышал «ватник»). Это уже лучше, но слишком уж приблатненно. Поэтому будем пользоваться нейтральным и однозначным термином ВАТ-файл.
Зачем же он нужен?

 

Пример первый. Файл AUTOEXEC.BAT

Если вам приходилось устанавливать DOS, то вы не могли не заметить, что вне зависимости от вашего желания DOS создает на C:\ файлы AUTOEXEC.BAT и CONFIG.SYS (это одна из функций некоторых инсталляторов). Второй из них мы обсуждать не будем, сосредоточившись на первом. Его название составлено из начал английских слов «automatic execution», то есть «автоматическое исполнение». Он содержит команды, выполняемые при каждом включении или перезагрузке компьютера. В частности, входя в DOS, вы захотите, чтобы у вас были активны, например:

  • Русификатор, позволяющий читать, писать и выводить на печать тексты на русском языке;
  • Драйвер CD-ROM;
  • Драйвер мыши.
Это разумный минимум. Кроме того, есть бесконечное количество других услуг, из которых вам наверняка (или, по крайней мере, почти наверняка) потребуется следующее:
  • Возможность запуска избранных программ (архиваторы, антивирусы, прочие утилиты) без утомительного погружения в дебри директорий, а простым набором имени исполняемого файла в командной строке;
  • Быстрая проверка на вирусы;
  • Оболочка (типа Norton Commander).
Разумеется, все это можно сделать и вручную, вводя соответствующие команды традиционным способом. Но:
  • Это отнимает много времени;
  • Для этого нужно держать все команды (с ключами) в своей памяти или на клочке бумажки, который таинственно исчезает в самый неподходящий момент;
  • Это утомительно и совершенно неинтересно;
  • Это чревато ошибками, последствия которых могут быть поистине катастрофическими.
И появляется шальная мысль: «А нельзя ли сделать так, чтобы это выполнялось автоматически?». Разумеется, можно. Ведь не вы один такой ленивый. Поэтому другие ленивые люди и придумали ВАТ-файлы вообще и AUTOEXEC.BAT в частности. Отладив его один-единственный раз, можно после нажатия кнопки включения компьютера пойти налить себе чаю, а вернувшись, увидеть родные сине-белые панели папаши Нортона и в середине – красненький прямоугольник мышиного курсора. И можно не сомневаться – русские тексты читабельны, сидюк виден. А все он, батюшка-кормилец, AUTOEXEC.BAT.
В те благословенные времена, когда я работал под DOS, я решил, что не реже чем один раз в месяц нужно выполнять следующие действия: 1) полная проверка на вирусы; 2) дефрагментация диска; 3) сканирование оного Disk Doctor'ом. Так вот, каждый раз при загрузке на экране появлялась информация о дате последнего из этих действий, и, если это было раньше чем месяц назад, соответствующее сообщение назойливо мигало и предлагало начать проверку немедленно.
Кстати, если DOS при загрузке не находит файла AUTOEXEC.BAT, ничего трагичного не случается. По умолчанию отрабатываются команды DATE и TIME, после чего DOS ожидает команды.

 

Пример второй. Антивирусы

Каждый раз, проверяя свой агрегат на зловредные вирусы, я запускал Aidstest Лозинского и DrWeb Данилова. Вот какие командные строки для этого требовались:

C:\UTILS\AIDS\AIDSTEST\AIDSTEST.EXE C: /F /PAIDSHDD.REP /Q /B /X

C:\UTILS\AIDS\DRWEB\DRWEB.EXE C: /CL /CUP /DL /HI /MS /NI /OK /QU /RP /RV /SD /SO /TB /WF

Запомнили? Мне-то еще ничего, я раз в месяц проверял, а если от кого нужда или горький опыт требует это делать еженедельно? Ежедневно? Невольно подумаешь: «Черт с ними, с вирусами, авось пронесет, а тут такой роман писать». Вы спросите, как я это вытерпел? Да никак. Один раз потратил полчаса, написал ВАТ-файл и с тех пор горя не знал. Запустишь его и занимаешься своими делами.

 

Пример третий. Резервное копирование

Ничто не вечно под луной. Даже сверхустойчивая DOS иногда падает. На жестких дисках появляются плохие сектора, и по закону подлости на самых ответственных участках. Выходят из строя контроллеры. Случайно (или по воле друзей и сослуживцев с избыточным чувством юмора) затираются системные файлы. Или их съедает вирус, против которого Лозинский, Данилов и Касперский еще не успели написать противоядие... Короче, безопасности никогда не бывает слишком много. А посему важные файлы хорошо бы иметь где-то еще, кроме жесткого диска: на дискете, на другом компьютере, на ZIP'е, а еще лучше – везде, где только возможно. Я, например, к числу важных файлов относил следующие:
  • AUTOEXEC.BAT и CONFIG.SYS;
  • Все без исключения документы;
  • Шаблоны и файлы конфигурации различных утилит и редакторов;
  • Пользовательские словари электронных переводчиков;
  • Каталоги описаний дисков;
  • Реестр Windows;
  • И тому подобное.
Мало того, что они периодически обновляются. Они еще и разбросаны по всему диску. Надо их отовсюду извлечь и скопировать в одно место. Причем только если файл со времени последнего резервного копирования обновлялся. Потом вставить дискеты и «спасти». Вручную – опять же, долго, утомительно и тоскливо. ВАТ-файл делает все сам, разве что дискеты не вставляет.

 

Пример четвертый. Групповое переименование

Накапливаются текстовые файлы. Я их нумеровал: 01.TXT, 02.TXT, 03.TXT... Потом дело дошло до 99.TXT. Что делать? Ясно, что. Переименовать файлы следующим образом: 01.TXT станет 001.TXT, 02.TXT станет 002.TXT, и все дела. А теперь попробуйте-ка сделать это через команду ren. Разумеется, по маске, чтобы одной командой все файлы разом. Получилось? Если да, то напишите, как. Признаюсь, у меня не получилось. Из командной строки. А в ВАТ-файле для этого потребовалась одна-единственная команда. Привычное потрескивание винчестера, мелькание текста на экране, и пожалуйста – цель достигнута.

Итак, резюме таково: ВАТ-файл

  • экономит время;
  • освобождает пользователя от неквалифицированного, утомительного и скучного труда;
  • позволяет избежать трагических ошибок;
  • доступен для отладки, настройки и сохранения его резервных копий.

По-моему, рекламы достаточно.


Законы ВАТ-файлов

Закон Первый. ВАТ-файл – это программа на алгоритмическом языке DOS;

Закон Второй. ВАТ-файл может принести вреда больше, чем пользы;

Закон Третий. ВАТ-файл не умеет больше того, что умеет DOS.

Комментарии:
  1. Можно утверждать, что язык ВАТ-файлов – самый примитивный из существующих. Переменные? Да, они есть, но уж с очень корявыми именами. Циклы? Всего один, и то с весьма скудными возможностями. Ветвление? Есть, но опять же, упрощено до крайности.

  2. Если вы пишете программу на Паскале, то худшее, что вас может постичь – потеряете время (если ваша программа не аналог fdisk. - прим. ред.). С ВАТ-файлом все серьезнее. Достаточно выполнить ВАТ-файл с командой del C:\COMMAND.COM – и очень крупные неприятности вам гарантированы. Поэтому до тех пор, пока вы не почувствовали себя в ВАТ-файлах, как рыба в воде, не покушайтесь на святое. Сделайте следующее:
    • Создайте системную дискету и, если она уже есть, проверьте ее работоспособность;
    • Проведите резервное копирование;
    • Создайте директорию C:\TEST, которую мы далее будем называть полигоном;
    • Скопируйте (а не переместите!) туда несколько файлов, все равно каких. Желательно, чтобы они были небольшого объема и по несколько штук для каждого из расширений, скажем, DOC, COM, EXE, TXT. Кроме того, скопируйте (а не переместите!) из корня файл AUTOEXEC.BAT – мы его будем использовать для справки. Отныне мы станем над этими файлами изгаляться: стирать их, переименовывать и копировать, но... лишь в пределах полигона. Любые потери не будут фатальными и смогут быть легко восполнены.

  3. Как уже говорилось, все можно делать и из командной строки. Вопрос – сколько это займет времени, сколько раз вы за это время зевнете и сколько при этом допустите ошибок. Суть Третьего Закона в том, что ВАТ-файл – не волшебник, а помощник.


Как вы уже, очевидно, догадались, простейший ВАТ-файл содержит команды DOS, по одной на строку. Создадим файл FIRST.BAT (например, в Нортоне для этого надо нажать Shift-F4) и напишем в него:

ver
dir

Сохраним и выйдем (F2, затем F10). Вначале те же команды DOS (ver и dir) последовательно выполним из командной строки, а затем запустим на выполнение ВАТ-файл. Заметили разницу? Правильно, ВАТ-файл выполняет команды подряд, без паузы. Впрочем, паузу тоже можно организовать. Но об этом позже.
Кстати, как выполнить ВАТ-файл? Так же, как любой другой исполняемый файл DOS. В Нортоне либо наводим на него курсор и нажимаем Enter, либо дважды щелкаем мышью. Из командной строки набираем либо полное имя (FIRST.BAT) либо только имя без расширения (FIRST) и опять же нажимаем Enter. Но в последнем случае надо помнить одно важное правило:

При указании только имени (без расширения) одноименные исполняемые файлы DOS запускаются в следующем приоритетном порядке: COM EXE BAT

То есть расширение ВАТ для DOS имеет совершенно особый смысл, и неспроста. Если в DOS вам не хватает команд, внешних и внутренних, пишите свою «команду DOS» – это и будет ваш ВАТ-файл.
Итак, первый опыт исполнения простейшего ВАТ-файла показал, что нет никакой существенной разницы между исполнением команд DOS и исполнением ВАТ-файла, эти команды содержащего. Вот вам и поле для экспериментов. Например, не выходя за пределы полигона, попробуйте следующее:

  1. Создать директорию ONE;
  2. Скопировать туда файл WOLF.TXT (допустим, что он у нас есть);
  3. Перейти в эту директорию и просмотреть ее содержимое;
  4. Вернуться;
  5. Стереть файл WOLF.TXT;
  6. Стереть директорию ONE;
  7. Убедиться, что мы ее действительно стерли.

Попробуйте проделать все это, не заглядывая дальше, а потом проверьте.

md one
copy wolf.txt one
cd one
dir
cd..
del one\wolf.txt
rd one
dir

Разумеется, ваш текст может слегка отличаться от моего. Например, вторая строка может с тем же успехом иметь следующий вид:

copy wolf.txt c:\test\one
copy wolf.txt c:\test\one\*.*

Суть не в форме, а в содержании. Раз вы выполнили поставленную задачу, то детали большого значения не имеют. Например, можно долго и достаточно продуктивно рассуждать об относительном (ONE) и абсолютном (C:\TEST\ONE) указании пути. Но это обсуждение имеет отношение уже не к теме ВАТ-файлов, а к теме DOS вообще.


Теперь пора перейти к тем возможностям ВАТ-файла, которые не предоставляет командная строка DOS, и которые придают ВАТ-файлу почти безграничные возможности.

Будь на то моя воля, я бы каждый учебник по программированию начинал с самого важного оператора – оператора комментария. Эти операторы служат двум главным целям: 1) снабжение своего детища пояснениями; 2) временное исключение из обработки участков программы. Для последней цели существует даже специальный термин: «закомментировать». Итак, формат комментария таков:

rem Любой текст

Текст не должен содержать символы > («больше»), < («меньше») и | («конвейер»).
Как вы уже заметили (из опыта исполнения FIRST.BAT), каждая строка ВАТ-файла вначале выводится на экран, а затем выполняется. Хорошо это или плохо? Для отладки – хорошо, поскольку всегда видно, что в данный момент происходит. Для выполнения – плохо, ибо экран забивается лишней информацией, которая мешает увидеть информацию полезную. То есть неплохо было бы научиться управлять выводом: когда надо – включать, когда не надо – отключать. Для этого используется команда echo.
Уважаемые любители английского языка и счастливые обладатели оксфордского произношения! Если вы будете говорить слово «echo» так, как оно в действительности произносится, вас просто не поймут. Посему прикиньтесь посконным рязанским мужичком и произносите это слово как «эхо». На программерском жаргоне словосочетание «выводить информацию» подчас обозначается термином «эхировать». И в этом можно усмотреть особый смысл. Строка ВАТ-файла и ее исполнение – это ни что иное, как наше «Ау!» и его эхо. Клич есть всегда, а отклик может быть, а может и не быть.
Итак, команда echo существует в пяти форматах:

  1. echo Текст
  2. echo on
  3. echo off
  4. echo
  5. echo.

А теперь – разъяснения:

  1. Команда выводит текст на экран. Разумеется, выводится только текст, без самого слова echo и пробела, который для данного формата обязателен. Правда, текст не должен содержать символы > («больше»), < («меньше») и | («конвейер»). Точнее говоря, их можно использовать, лишь твердо понимая, зачем вы это делаете. Кроме того, лучше воздержаться от использования символа %. Потом станет ясно, почему.
  2. Вывод на экран включается (режим по умолчанию).
  3. Вывод на экран выключается (подавляется).
  4. Выводит информацию о текущем состоянии режима эха. Исполнение этой команды приводит к одному из следующих сообщений:
    ECHO is on
    ECHO is off
    Единственное, что остается загадкой – практический смысл этого формата.
  5. Вывод на экран пустой строки. Того же результата можно достичь, введя вместо точки пробел и символ с кодом 255. Но это по всем признакам менее удобно.

Итак, если мы хотим создать «молчаливый» ВАТ-файл, то первой его строкой должна быть такая:

echo off

Создадим ВАТ-файл следующего содержания:

echo off
echo Some text

Его выполнение даст следующее:

echo off
Some text

Проведем разбор полетов. Вторая строка исполнена так, как нам хотелось: выведен только текст, а сама команда осталась «за кадром». Значит, первая строка сработала верно, подавив вывод. Но сама она на экран вывелась. Почему? Да все потому же: любая строка вначале эхируется (если эхо включено), а лишь затем выполняется. А эхо включено по умолчанию. Так что же, нельзя «заглушить» вывод строки echo off? Можно. Начиная с третьей версии DOS, в ВАТ-файлах введено такое правило:

Любая строка, начинающаяся с символа @, не выводится на экран, вне зависимости от текущего режима эха.

Иными словами, команда echo off обеспечивает подавление глобальное, а символ @ – локальное. Обрадовавшись, исправим наш ВАТ-файл и получим вот что:

@echo off
echo Some text

Теперь его исполнение полностью соответствует нашему желанию:

Some text

Если собрать с самых разных компьютеров 100 ВАТ-файлов, то можно биться об заклад, что в 95 из них первая строка будет именно такая: @echo off. Остальные же 5 наверняка находятся в стадии разработки и вывод умышленно включен для целей отладки.
Это вовсе не значит, что с @ должна начинаться только строка echo off и только первая. Рассмотрим два ВАТ-файла и попробуем вначале проследить, как они будут исполняться:

@echo off
echo on
echo Hello everybody! Here it is
@ver
@echo Good bye.

@echo off
echo on
echo Hello everybody! Here it is
@echo off
ver
echo Good bye.

Кстати, в свете Второго Закона любой ВАТ-файл полезно вначале выполнить умозрительно, без набивки. Мало того, что это спасет вас от необратимых катастроф. Это позволит лучше постичь логику процесса. Так что, заметили разницу в выполнении двух вышеприведенных ВАТ- файлов? И я нет.
А можно ли подавить вывод на экран не самой команды, а результатов ее выполнения? Многие справочники этот вопрос стыдливо замалчивают. Впрочем, их можно понять. Подавление результата выполнения команды превращает ВАТ-файл в своего рода «черный ящик»: что-то делает, а что – неизвестно. Однако я этим приемом частенько пользуюсь. Итак, результат выполнения команды можно направить на любое устройство командой

ctty устройство

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

ctty prn
dir /w

Но наиболее часто используются устройства con и nul. Устройство «con» – это консоль, попросту экран. Устройство «nul» – нулевое, то есть отсутствие какого-либо устройства. По умолчанию, разумеется, предполагается вывод на экран. Но зачем это может пригодиться? Однажды я написал достаточно большой ВАТ-файл, одной из задач которого было архивирование с паролем, вводимым из командной строки. Само собой, демонстрировать этот пароль кому-либо у меня не было никакого желания. И если момент ввода пароля в командную строку я выбирал сам, то гарантировать, что кто-то не взглянет на экран как раз в момент выполнения команды архивирования, я не мог. Выход? Направить вывод на нулевое устройство командой ctty nul, затем заархивировать и уже потом восстановить вывод на консоль командой ctty con.
Заметим, что команды echo и ctty действуют независимо друг от друга. Поэтому можно довести наше сравнение до абсурда – наличие эха при отсутствии звука.
А теперь обратимся к обещанной паузе. Формат команды крайне прост: pause. Попробуйте. Не понравился текст, который команда выдает на экран? У вас ВАТ-файл общается с пользователем по-русски, а тут досадное английское приглашение? Что же, дело поправимо... Догадались?

echo Нажмите любую клавишу
pause > nul

Зачем же символ перенаправления, если команда ctty обходилась без него? Во-первых, она все-таки может его использовать. Попытайтесь это сделать и посмотрите, что выйдет. Во-вторых, перенаправление – это правило, а не исключение. Попробуйте перенаправление с командами ver, dir, date, и вообще теми, которые что-то пишут на экране. Кстати, в качестве устройства могут выступать не только стандартные (con, prn, nul, com1 и другие), но и любой файл. Я этим очень часто пользуюсь. Вообще перенаправление и фильтры – неисчерпаемая тема. Но все это может быть использовано и в командной строке, а мы сейчас обсуждаем команды, специфичные только для ВАТ-файлов.
Команды rem, echo, ctty и pause составляют, так сказать, декоративную сторону ВАТ-файлов. В самом деле, они упрощают и украшают общение файла с пользователем, но к функциональной стороне дела имеют лишь косвенное отношение. Пора перейти к серьезным темам.


Продолжение в следующем выпуске.

ОКРУЖЕНИЕ .::. Браузер Lynx

В выпуске 24 от 22901Вашей рассылки "Программирование для начинающих" Вы писали: "Понимаю, что не у всех установлен Linux, поэтому, если кто-нибудь видел текстовый браузер для DOS/Windows, намекните, пожалуйста, где его можно взять". Здесь виндовая версия Lynx-а: http://www.jim.spath.com/lynx_win32/

Михаил

http://www.fdisk.com/doslynx/wlynx/

AleX


Школа - сайт со шпаргалками, сочинениями, рефератами только для школьников!

DO Sледующего выпуска. Пока!


С уважением,
Вячеслав Stac Мацнев mailto:stac@stacmv.net
10.10.01.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу
Рейтингуется SpyLog

В избранное