| 
 
 CMD - Console Must Die? 
 Спецвыпуск Xakep, номер #021, стр. 021-068-2 
 ВЫЗОВ ФАЙЛОВ Для вызова других командных файлов в батниках можно использовать аж три команды. Во-первых, можно просто написать имя другого батника в строке. При таком вызове выполнение текущего завершится, а вызванный пойдет на исполнение. Во-вторых, можно вызвать батник командой "call [имя батника]". Тогда выполнение текущего CMD-файла приостановится до завершения работы вызванного, а потом снова возобновится. И, наконец, в-третьих, другой батник или просто команду можно запустить на выполнение параллельно с текущим командой "start [заголовок окна] [имя батника\команды]". Тогда новый скрипт откроется в новом окне (кстати, если добавить к команде параметр /wait, то текущий батник будет ждать завершения вызванного). МЕТКИ Куда ж без них! Сколько нам твердили, что программирование с GOTO - отстой... Здесь г. Гейтс не оставляет нам шансов на альтернативу, придется юзать. Метки оформляются так: :metka goto metka Любую метку можно вызвать командой call, делается это так: call :metka Тогда весь текст батника от метки и до конца будет считаться новым батником :). Заморочено, но удобно. Настоящие программисты не любят метки, потому что из-за них может возникнуть недетское зацикливание. Но именно поэтому метки нравятся нам - западлостроителям. Самое простейшее зло на командном языке выглядит примерно так: ----klya.cmd---- @echo off :dr start klya.cmd goto dr ----klya.cmd---- Этот зло-скриптик будет заниматься вызовом самого себя бесконечное число раз. Причем каждый вызванный им экземпляр будет заниматься тем же. Скорость ухода тачки в даун зависит только от ее мощности. До скорого ребута! ПАРАМЕТРЫ Помнят ли потомки ДОСа славное начинание по передаче аргументов прямо из командной строки? Помнят, да еще как. Начиная с НТшки, аргументы можно делить на части и преобразовывать, не отходя от кассы. Обращения к параметрам проходят вот так: %1 - просто первый аргумент %* - все аргументы %~1 - первый аргумент с удалением кавычек ("колбаса" > колбаса) Остальные параметры действуют, если только батнику передается имя файла (вызов типа klya.cmd dr.txt). %~f1 - абсолютный путь к файлу  %~d1 - имя диска %~p1 - имя каталога %~n1 - имя файла (klya.txt > klya) %~x1 - расширение файла (klya.txt > txt) %~a1 - атрибуты файла %~t1 - дата и время создания файла %~s1 - размер файла Все параметры комбинируются без проблем: %~dpnxs1 выдаст поделенный на части путь к файлу и его размер, и т.п. ПОЛЕЗНЫЙ ПРИМЕР Так как теория лучше всего познается на практике, попробуем написать небольшой файлик, который будет... Ну, скажем, будем помещать копии файла во все подкаталоги текущего каталога. Типа ты админ и раздаешь всем пользователям новые правила работы :). Подобный файл разбирается на microsoft.com, но его можно несколько улучшить. В нем будут присутствовать циклы, в следующий раз мы разберем их подробнее, а пока постарайся разобраться в том, что есть. Наш батник будет вызываться так: admin rules.txt subdir. Если не указано имя директории, будем работать в текущей. Назад на стр. 021-068-1  Содержание  Вперед на стр. 021-068-3 |