| 
 
 CMD - Console Must Die? 
 Спецвыпуск Xakep, номер #021, стр. 021-068-1 
 c:\WINNT\system32\cmd.exe Андрей "Дронич" Михайлюк (dronich@real.xakep.ru) Программки, утилитки, оптимизаторы... Слащавенько получается, ребятки! Ведь винтукей замечателен не только повышенной стабильностью и нормальной многозадачностью, но и практически полноценной консолью. Ею-то мы с тобой и займемся, вспомнив дедушку ДОСа. Ну и юниксоидам нос слегка утрем - типа, мы тоже не лаптем щи хлебаем, не все нам мышой клацать :). Юзать консоль для запуска прог - чистейшей воды моветон. Мы займемся составлением полезных командных файлов, по традиции зовущихся батниками (хотя на смену ".bat" давно пришел ".cmd"). Для начала надо освоить самые простые операторы, чем мы сегодня и займемся. Поскольку в языке написания cmd'шек многое осталось неизменным со времен ДОСа, подробно будем рассматривать только нововведения, а по остальному пробежимся для освежевания мозгов :). Язык командных файлов состоит из двух больших частей: выполняемые команды и системные метки. Каждой из выполняемых команд соответствует одноименный экзешник ("ping" - c:\WINNT\system32\ping.exe, "find" - C:\WINNT\system32\find.exe), метки же просто распознаются системой в контексте батника (циклы, условные операторы). Можно сказать, что команд вообще не существует :), просто средствами языка вызываются нужные программы. Так оно и есть, но поскольку круг чисто служебных прог ограничен (не будешь же ты запускать тот же sleep не из батника), обзовем их командами. ВЫВОД Самые простые операторы - операторы вывода. В батниках для этого используется команда "echo". Для вывода на экран строки "Klya is a greatest DUM" в CMD-файле надо прописать: echo Klya is a greatest DUM Только вот незадача - батники дублируют выполняемые команды, чтобы ты видел, чего, собственно, у них внутри творится. В нашем случае вместо одной строки на экране появится: echo Klya is a greatest DUM Klya is a greatest DUM Бороться с дублированием можно по-разному: для отключения вывода одной команды перед ней ставится "@", для отключения всех последующих надо дать команду "echo off". Так как обычно дублирующий вывод никому не нужен, в начале файла прописывают: @echo off Эта строка отключает дальнейший вывод и в придачу скрывает сама себя. УСЛОВИЯ Условный оператор, как и следовало ожидать, обзывается IF'ом и имеет такой формат: if [строка] [условие сравнения] [строка] [команда] В качестве условий сравнения строк применимы такие сокращения: EQU - равно, NEQ - не равно, LSS - меньше, GTR - больше, LEQ - меньше или равно, GEQ - больше или равно. Если сразу после IF поставить ключ /i, сравнялке будет наплевать на регистр строк (то есть А=а, B=b и т.д.). Существуют еще два подвида условных операторов: "if errorlevel [индекс ошибки]" и "if exists [имя файла]". Первый нужен для обработки критических ситуаций (выяснить, что за ошибка произошла). Во времена ДОСа это условие реально пользовали только для проверки файла на существование. Вуаля - к 2000 году Билли услышал наши молитвы и ввел новый подвид IF'a - "if exists", который только и делает, что проверяет существование файла. Лучше поздно, чем никогда :). Содержание  Вперед на стр. 021-068-2 |