![](../021.gif)
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
|