Методическое пособие для выполнения лабораторных работ и КР (1075934), страница 11
Текст из файла (страница 11)
.Здесь выполняется переход на метку по значению переменной и выводится другаяинформация. После завершения программы окно командной строки (CMD.EXE) не закроется.5.6. Вложенные командные файлыВложенные командные файлы, по сути, являются процедурами. Они могут разрабатываться и отлаживаться автономно, могут иметь параметры. При выполнении вложенного командного файла операционная система запускает дополнительный командныйпроцессор (CMD.EXE или COMMAND.COM).
При завершении командного файла с помощью команды EXIT /b <число> можно передать код возврата ERRORLEVEL (значениеопределяется значением параметра <число>). Кроме того, из вложенного командногофайла в основной могут быть переданы значения переменных, установленных командойSET. Ниже приведены примеры основного командного файла (SECOND.BAT) и вложенного командного файла (SUB.BAT).
На этих примерах иллюстрируются возможности вызова вложенных файлов.Файл SECOND.BAT:ECHO OFFREM Call sub fileCALL SUB.BATPAR1 , PAR2ECHO Return from sub fileECHO ERRORLEVEL = %ERRORLEVEL%ECHO %VAR%PAUSEEXIT /BФайл SUB.BAT:REM Вложенный файлECHO Name batch=%0ECHO Parameter 1 =%12010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”ECHO Parameter 2 =%2REM Return Code = 5Set VAR=SampleEXIT /B544При запуске основного файла:>second.batПолучим следующий результат:>ECHO OFFName batch=SUB.BATParameter 1 =PAR1Parameter 2 =PAR2Return from sub fileERRORLEVEL = 5SampleДля продолжения нажмите любую клавишу . .
.В данном примере показано как:− Вызвать вложенный командный файл и передать в него параметры (CALLSUB.BAT PAR1 , PAR2);− Установить переменную во вложенном файле (Set VAR=Sample) и прочитать еезначение в основном файле (ECHO %VAR%);− Установить код возврата (ERRORLEVEL) во вложенном командном файле (EXIT/B5) и прочитать его значение в основном файле(ECHO ERRORLEVEL =%ERRORLEVEL%).Число вложений командных файлов практически не ограничивается под управлением CMD.EXE.5.7. Примеры командных файловНиже приведены два примера простых командных файлов для организации экранного меню.
Для организации интерактивного взаимодействия здесь используются утилитыBE и CHOICE. Описание этих программ приведено в разделе данного пособия (см. раздел6. Утилиты BE и CHOICE ).В первом примере: экран сначала очищаем, затем выводим текстовое меню (пункты 1,2 и 3), запрашиваем ввод клавиши, выполняем ветвление (IF - GOTO), проверяя переменную ERRORLEVEL.
По отдельным пунктам меню выполняем простые действия(ECHO и PAUSE). Если выбраны пункты 1 или 2 то повторяем все действия снова. Попункту 3 завершаем работу командного файла.echo off:menuclsecho 1. Режим 1echo 2. Режим 2echo 3. Выходbe ask "Выберете пункт (1,2,3)" '123' default=2 timeout=10if ERRORLEVEL 3 goto 3if ERRORLEVEL 2 goto 2if ERRORLEVEL 1 goto 1goto fin:1echo 1pausegoto menu:2echo 2pause2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”goto menu45:3echo 3pausegoto fin:finECHO Завершение программыБлок схема данной программы приведена в разделе данного пособия - 21.3. Примеры блок-схем программ.Во втором примере: экран сначала очищаем, затем выводим текстовое меню(пункты a, b и c), запрашиваем ввод клавиши, выполняем переход по переменной, построенной на основе ERRORLEVEL (GOTO %met%).
По отдельным пунктам меню выполняемпростые действия (ECHO и PAUSE). Если выбраны пункты “a” или “b” то повторяем вседействия снова. По пункту “c” завершаем работу командного файла.echo off:menuclsecho a. Oneecho b. Twoecho c. Exitchoice /C:abc/SВведите номер пункта менюSet met=p%ERRORLEVEL%goto %met%:p1echo apausegoto menu:p2echo bpausegoto menu:p3echo cpausegoto fin:finECHO Завершение программыРезультаты работы данных программ получите самостоятельно в режиме командной строки.Практика.1. Выполните все примеры данного раздела.2.
Создайте командный файл для 2-й лабораторной работы и оформите отчет в соответствии с требованиями.2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”466. Утилиты BE и CHOICEВ командных файлах отсутствуют операторы и директивы ввода информации. Этосоздает проблемы при создании интерактивных командных файлов. Существует несколько простых возможностей запросить информацию от пользователя, применяющего данный командный файл, для ввода данных.
Это:− Использование интерактивной утилиты BE (Batch Enhancer – расширитель командных файлов), созданной специально для этих целей,− Использование специальной команды CHOICE, которая ранее входила в состав ОС,хотя и теперь может использоваться в режиме командной строки,− Разработка и использование собственной программы, которая может быть вызванав командном файле, и может передавать в его среду информацию.Во всех перечисленных случаях ввод данных выполняется только с помощью одной переменной целого типа ERRORLEVEL, которая, по сути, представляет код возвратавызванной программы. Если разрабатывается собственная программа, то возврат можетбыть выполнен функцией exit() для языка Си или подфункцией 4Сh прерывания 021h.Данная переменная может быть использована в операторе IF, что обеспечивает ветвлениев программе командного файла.
Для этого предусмотрена специальная конструкция оператора IF. При формировании переменной ERRORLEVEL, а это единственная переменнаяцелого типа в командных файлах, стандартного типа, мы можем использовать ее в следующих операторах:IF ERRORLEVEL 5 GOTO M2…:М2Переход на метку М2 выполняется в том случае, если значение ERRORLEVEL>=5.IF ERRORLEVEL 3 SET MET=M1…GOTO %MET%…:М1Переход на метку М1 выполняется в том случае, если значение ERRORLEVEL>=3.Переменная ERRORLEVEL может быть использована и качестве составного имениоператора:GOTO М%ERRORLEVEL%Переход на метку М2 выполняется в том случае, если значение ERRORLEVEL=2.6.1.
Утилита BE , назначение и использованиеСправка для утилиты BE, полученная после выполнения команды - BE /?, содержит следующую информацию:Batch Enhancer, Norton Utilities 6.2, Copyright 1992 by Symantec CorporationNew commands to enhance batch files.BE command [parameters] [/DEBUG]BE pathname [ [GOTO] label]commands are:ASKPRINTCHARBEEPREBOOTBOXROWCOLCLSSADELAYSHIFTSTATEEXITTRIGGERGOTOWEEKDAY472010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”JUMPWINDOWMONTHDAY/DEBUGDisplay the ERRORLEVEL code.pathnameName of a BE command file.labelLabel in file to start execution.For more help on a specific command type:BE command ?Для выполнения ЛР нам нужны две команды: ASK и BEEP.
Команда ASK выводитна экран подсказку, ожидает нажатия клавиши и позволяет запросить код возвратаERRORLEVEL после ввода нужной клавиши. Справка BE ASK ? имеет вид:BE ASK "< подсказка >" [‘<список символов>’] [DEFAULT=<символ>][TIMEOUT=<число>] [ADJUST=< число >]Где:<prompt> – подсказка, выдаваемая перед запросом нажатия клавиши.< список символов > – список символов для выбора альтернатив.< символ > – клавиша, выбираемая по умолчанию.< число > – для TIMEOUT время ожидания в секундах, через которое срабатываетклавиша, выбираемая по умолчанию.Примеры.be ask "Выберете пункт меню (1,2,3)" '123' default=1 timeout=4- запрашивается выбор из набора (1,2,3),а через 4 секунды по умолчаниюсрабатывает нажатие “1”.be ask "Введите символ (a,b,c)" 'abc' default=ctimeout=10- запрашивается выбор из набора (a,b,c),а через 10 секунд по умолчаниюсрабатывает нажатие “с”.Второй режим работы утилиты – вывод определенного количества звуковых сигналов заданной частоты, длительности и длительности промежутков между ними.
СправкаBE BEEP ? имеет следующий вид:Batch Enhancer, Norton Utilities 6.2, Copyright 1992 by Symantec CorporationBEEP [switches]orBEEP command-file [/E]Switches/Dn Duration of the tone in n/18 seconds/Fn Sound a tone of frequency n/Rn Repeat the tone n times/Wn Wait between tones n/18 seconds/EEcho text in quotes following notesГде:/D<число> - длительность в <число>/18 seconds/F<число> - частота звукового сигнала <число>/R<число> - повтор звуков <число> раз/W<число> - ожидание между звуками <число>/18 secondsВо второй разновидности конструкции характеристики нот и звуков записываютсяв отдельный командный файл.Пример.be.exe beep /D18 /F200 /R5 /W18 /EВыдача 5 звуковых сигналов с частотой 200 и длительностью в 1 секунду.6.2.
Утилита CHOICE, назначение и использованиеДругая утилита CHOICE предназначена для только для запроса ввода клавиши.Подсказка по ней имеет вид:2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”CHOICE [/C[:]<символы выбора>][<текст>]48[/N][/S][/T[:]<клавиша>,<число>]/C[:]<символы выбора> - Specifies allowable keys. Default is YN/NDo not display choices and ? at end of prompt string./STreat choice keys as case sensitive./T[:]<клавиша>,<число>Default choice to <клавиша> after ,<число>seconds<текст>Prompt string to displayERRORLEVEL is set to offset of key user presses in choices.Где:<символы выбора> - последовательность символов для выбора./N – не выводить подсказку доступных клавиш после текста подсказки/S – рассматривать ввод символов без учета регистра/T – использовать клавишу по умолчанию по истечению заданного времени.<число> - количество секунд ожидания для использования клавиши по умолчанию.<клавиша> - клавиша по умолчанию.<текст> - текст подсказки для ввода клавишиПримеры.CHOICE/C:123 /T:2,05Запросить ввод из трех альтернатив (1,2,3) использовать “2” после пяти секундожидания.CHOICE/C:ABC /N Введите (A,B,C):Запросить ввод из трех альтернатив (A,B,C), не различать срочные и прописные,ввод выполняется после подсказки “ Введите (A,B,C):”.6.3.
Утилита GREP, назначение и использованиеОчень полезная утилита для программистов – GREP.COM. Она входит в состав пакета BC++ 3.1. Эта утилита позволяет выполнить поиск информации в строках в текстовых файлах с выдачей имен и номеров строк, где эта информация найдена. Стандартнаясправка о работе и параметрах этой утилиты приведена ниже.Turbo GREP Version 3.0 Copyright (c) 1992 Borland InternationalSyntax: GREP [-rlcnvidzuwo] searchstring file[s]ally"+".tersOptions are one or more option characters preceeded by "-", and optionfollowed by "+" (turn option on), or "-" (turn it off).-r+-c-v-d-u-o-Regular expression searchmatch Count onlyNon-matching lines onlySearch subdirectoriesUpdate default optionsUNIX output format-l-n-i-z-w-The default isFile names onlyLine numbersIgnore caseVerboseWord searchDefault set: [0-9A-Z_]A regular expression is one or more occurrences of:One or more charac-optionally enclosed in quotes.