лабораторная работа no2 интерпретатор командной строки ос ms windows

Лабораторная работа no2 интерпретатор командной строки ос ms windows

СКАЧАТЬ: os.zip [283,52 Kb] (cкачиваний: 98)

Лабораторная работа №2
Интерпретатор командной строки ОС MS Windows XP

Цель работы – знакомство с языком интерпретатора командной строки ОС MS Windows XP и командными файлами
Ход работы

• Разработать и выполнить командные файлы (КФ), выполняющие следующие функции:
• Вывод на экран имен всех файлов с указанным расширением, находящихся в каталоге, имя которого задается при запуске командного файла первым параметром. Расширение файлов задается вторым параметром.

• В заданном каталоге и его подкаталогах найти и вывести на экран имена подкаталогов.

• В каталогах, имена которых заданы первым и вторым параметрами командного файла, найти и вывести на экран имена файлов (расширения могут быть любые), присутствующие как в первом, так и во втором каталоге. Следует использовать только один оператор FOR.

• Вычисление и вывод на экран значения факториала целого числа, задаваемого при запуске КФ. Предусмотреть проверку заданного значения и при задании отрицательного значения или значения, превышающего максимально возможную величину, выводить соответствующие сообщения. Для проверки правильности вычислений использовать калькулятор.

Индивидуальные задания для бригад и студентов:

1. Среди выполняющихся на ПК программ найти имена программ, запущенных системой

2. Подсчет количества положительных и отрицательных чисел целых чисел в текстовом файле. Считать, что слова в файле записаны в формате ОДНО СЛОВО В СТРОКЕ. Имя файла задается первым параметром КФ.

Источник

Лабораторная работа № 1

Управление ос ms Windows с помощью командной строки

Цель работы – знакомство с возможностями интерпретатора командной строки и командами MS Windows, приобретение навыков работы со справочной системой командного процессора cmd, знакомство с командными файлами ОС MS Windows, приобретение навыков разработки и отладки сценариев MS Windows

Запустить интерпретатор командной строки

Увеличить размер окна интерпретатора и задать цвет фона и цвет шрифта (рекомендуется синий фон и белый шрифт).

Без использования текстового редактор а создать список из 4-5 слов (например, фамилий), используя пример 1. Отсортировать список в алфавитном порядке и сохранить его в новом файле.

C:\Users\student>Copy Con my.txt

Скопировано файлов: 1.

C:\Users\student>Sort my.txt > myout.txt

Создать один текстовый файл, содержащий справочные сведения по командам DIR, COPY, XCOPY и TASKLIST.

C:\Users\student>Copy Con com.txt

DIR [диск:][путь][имя_файла] [ключи]

Параметр [диск:][путь] задает диск и каталог, содержимое которого нужно вывести на экран.

Параметр [имя_файла] задает файл или группу файлов, которые нужно включить в список.

С помощью ключа /A[[:]атрибуты] можно вывести имена только тех каталогов и файлов, которые имеют за

Например DIR C:\ /A:HS

Ключ /O[[:]сортировка] задает порядок сортировки содержимого каталога при выводе его командой DIR. Е

сли этот ключ опущен, DIR печатает имена файлов и каталогов в том порядке, в котором они содержатся

в каталоге. Если ключ /O задан, а параметр сортировка

Ключ /S задает вывод списка файлов из заданного каталога и его подкаталогов.

Для копирования одного или нескольких файлов используется команда COPY.

Описание параметров и ключей команды COPY можно получить, используя ключ /?

Примеры использования команды COPY.

1. Копирование файла abc.txt из текущего каталога в каталог D:\PROGRAM под тем же именем: CO

PY abc.txt D:\PROGRAM

2. Копирование файла abc.txt из текущего каталога в каталог D:\PROGRAM под новым именем def.txt

: COPY abc.txt D:\PROGRAM\def.txt

3. Копирование всех файлов с расширением txt с диска A: в каталог ‘Мои документы’ на диске C:

COPY A:\*.txt «C:\Мои документы»

Если не задать в команде целевой файл, то команда COPY создаст копию файла-источника с тем же именем

, датой и временем создания, что и исходный файл, и поместит новую копию в текущий каталог на текуще

Пример 1 создания нового текстового файла и записи в него информации без использования текстового ре

Для решения задачи необходимо ввести команду COPY CON my.txt, которая будет копировать то, что наби

ся). Для завершения ввода необходимо ввести символ кон

Команда COPY может также объединять (склеивать) несколько файлов в один. Для этого необходимо указат

ь единственный результирующий файл и несколько исходных. Это достигается путем использования группов

ых знаков (? и *) или формата файл1 + файл2 + файл3. Н

COPY 1.txt+2.txt 3.txt

Команда COPY имеет недостатки. Например, с ее помощью нельзя копировать скрытые и системные файлы, ф

Источник

Лабораторная работа no2 интерпретатор командной строки ос ms windows

Лабораторная работа 2 – 2012

Интерпретатор командной строки ОС MS Windows XP

Часть 2. Язык интерпретатора и командные файлы

Цель работы – знакомство с языком интерпретатора командной строки ОС MS Windows XP и командными файлами, приобретение навыков самостоятельной разработки и отладки сценариев.

1. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

1.1 Язык интерпретатора Cmd.exe. Командные файлы

Язык оболочки командной строки в ОС служит для написания командных файлов (КФ). Командный файл (или сценарий) в Windows — это текстовый файл с расширением cmd или bat, в котором записаны внешние и внутренние команды ОС, а также некоторые дополнительные команды. Исполнение КФ приводит к тому же результату, что и последовательный ввод записанных в нем команд. При выполнении одинаковых действий использование КФ может сэкономить время.

Управление последовательностью выполнения команд КФ осуществляют операторы IF, FOR, CALL и GOTO, выполнение которых аналогично работе одноименных операторов языков программирования. Для отключения дублирования выполняемых команд в начале КФ записывается команда @ECHO OFF. В приводимых ниже примерах КФ для уменьшения объема данная команда опущена.

1.1.1 Параметры командной строки. Команда shift

При запуске КФ в командной строке можно указывать произвольное число параметров, значения которых можно использовать внутри файла. Это позволяет, например, применять один и тот же КФ для выполнения команд с различными исходными данными.

Для доступа из КФ к параметрам командной строки применяются переменные %0, %1, …, %9 или %*. Значением переменной %0 является имя выполняемого КФ, переменные %1, %2, …, %9 — значения первых девяти параметров командной строки соответственно, а переменная %* — все аргументы. Если в командной строке при вызове КФ задано меньше девяти параметров, то оставшиеся переменные из %1 – %9 замещаются пустыми строками.

Пример 1. Пусть имеется КФ cop.bat:

Если запустить его из командной строки с двумя параметрами, например

и произойдет копирование каталога C:\Programs со всеми его подкаталогами в D:\Backup.

При необходимости можно использовать более девяти параметров командной строки. Это достигается с помощью команды SHIFT (сдвиг влево), которая изменяет значения замещаемых параметров с %0 по %9, копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0, значение %2 – в %1 и т.д. Замещаемому параметру %9 присваивается значение параметра, следующего в командной строке за старым значением %9. Если же такой параметр не задан, то новым значением %9 будет пустая строка.

Пример 2. Пусть КФ my.bat вызван из командной строки следующим образом:

Тогда %0=my.bat, %1=p1, %2=p2, %3=p3, параметры %4 – %9 являются пустыми строками. После выполнения команды SHIFT значения замещаемых параметров изменятся следующим образом: %0=p1, %1=p2, %2=p3, параметры %3 – %9 – пустые строки.

1.1.2 Функции анализа имен файлов

В КФ предусмотрены функции анализа имен файлов и выделения свойств файла. Для параметра КФ с номером n (%n), задающего имя файла, допустимы функции, представленные в табл. 1.

Таблица 1. Функции анализа имен файлов

Выделяемое свойство файла

Переменная %n расширяется до полного имени файла

Из переменной %n выделяется только имя файла

Из переменной %n выделяется расширение имени файла

Возвращается дата и время создания (модификации) файла

Возвращается размер файла в байтах

Данные функции можно объединять друг с другом, например:

NXn — из переменной %n выделяются имя файла и расширение.

Пример 3. В каталоге C:\TEXT запущен КФ с параметром test.doc (%1=test.doc). Размер файла 5150 байт, дата создания 12.12.2011, время 18:57. Тогда применение функций, описанных в табл. 1, к параметру %1 даст следующие результаты:

1.1.3. Переменные среды. Оператор присваивания SET. Получение значений переменных

Внутри КФ можно использовать так называемые переменными среды (или переменные окружения), каждая из которых хранится в оперативной памяти, имеет свое уникальное имя, а ее значением является строка. Стандартные переменные среды автоматически инициализируются в процессе загрузки операционной системы. К таким переменным относятся:

WINDIR, которая определяет расположение каталога Windows,

TEMP, которая определяет путь к каталогу для хранения временных файлов Windows

PATH, в которой хранится системный путь (путь поиска), то есть список каталогов, в которых система должна искать выполняемые файлы или файлы совместного доступа.

В КФ с помощью команды присваивания значений SET можно объявлять собственные переменные среды и изменять их значения.

Для получения значения определенной переменной среды нужно заключить имя этой переменной в символы %. Например:

При запуске такого КФ на экран выведутся две строки:

1.1.4. Преобразования переменных как строк

С переменными среды в КФ можно производить операции преобразования, используя команду (оператор) SET.

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

Во-вторых, из переменной среды можно выделять подстроки с помощью конструкции %имя_переменной:

новые переменные будут иметь значения: %dd1%=21, %dd2%=21, %mm%=12, %yyyy%=2012.

в переменной b будет храниться строка «199456».

1.1.5. Операции с переменными как с числами

Значения переменных среды при выполнении КФ можно рассматривать как целые числа и производить с ними арифметические вычисления. Для этого используется оператор SET с ключом /A. Ниже приведен пример пакетного файла add2num.bat, складывающего два числа, заданных в качестве параметров командной строки, и выводящего полученную сумму на экран:

1.1.7. Связывание времени выполнения для переменных

При использовании группировки команд c помощью круглых скобок (например, в операторе IF) нужно учитывать, что переменные среды в КФ используются в режиме раннего связывания. С точки зрения логики выполнения КФ это может привести к ошибкам. Например, рассмотрим КФ 1.cmd:

Для правильного выполнения КФ, в котором используется группировка команд, для получения значения переменной вместо знака процента (%)необходимо использовать восклицательный знак (!) и предварительно включить режим связывания времени выполнения командой SETLOCAL ENABLEDELAYEDEXPANSION. Таким образом, для корректной работы файл 2.cmd должен иметь следующий вид: (рекомендуется проверить)

1.1.8. Прерывание и приостановка выполнения командных файлов

1.1.9. Вызов внешних командных файлов. Оператор CALL

Из одного КФ можно вызвать другой, указав его имя. Например:

В этом случае после выполнения КФ f.bat управление в вызывающий файл не передается. Для того, чтобы вызвать внешний КФ с возвратом в первоначальный файл, нужно использовать оператор CALL файл. Например:

В этом случае после завершения работы файла f.bat управление вернется в первоначальный файл на строку, следующую за командой CALL (в примере это команда COPY D:\*.* C:\).

1.1.11. Оператор перехода GOTO

КФ может содержать метки и операторы GOTO перехода к этим меткам. Любая строка, начинающаяся с двоеточия :, воспринимается при обработке КФ как метка.

Пример 4. Пусть имеется КФ следующего содержания:

В операторе GOTO можно задавать в качестве метки перехода строку :EOF, которая передает управление в конец текущего КФ.

Для перехода к метке внутри КФ кроме команды GOTO также можно использовать и рассмотренный выше оператор CALL :метка аргументы

При выполнении такой команды создается новый контекст текущего КФ с заданными аргументами, и управление передается на инструкцию, расположенную сразу после метки. Для выхода из такого КФ необходимо два раза достичь его конца. Первый выход возвращает управление на инструкцию, расположенную сразу после строки CALL, а второй выход завершает выполнение КФ.

1.1.12. Оператор проверки условия IF

С помощью оператора IF … ELSE (ключевое слово ELSE может отсутствовать) в КФ можно выполнять обработку условий двух типов. При этом если заданное после IF условие принимает истинное значение, система выполняет следующую за условием команду (или несколько команд, заключенных в круглые скобки), в противном случае выполняется команда (или несколько команд в скобках), следующие за ключевым словом ELSE – так же, как и в языках программирования.

Первый тип условия используется обычно для проверки значения переменной. Для этого применяются два варианта записи оператора IF:

(квадратные скобки указывают на необязательность заключенных в них параметров) или

Условие строка1==строка2 считается истинным при точном совпадении обеих строк. Параметр NOT указывает на то, что заданная команда выполняется лишь в том случае, когда сравниваемые строки не совпадают.

Для группировки команд могут использоваться круглые скобки. Иногда использование круглых скобок необходимо для правильной работы команды if…else – например для вывода на экран наибольшего из двух параметров, с которыми запущен КФ, следует использовать оператор

if %1 GTR %2 (echo %1 ) else (echo %2)

Строки могут быть литеральными или представлять собой значения переменных (например, %1 или %TEMP%). Кавычки для литеральных строк не требуются. Например,

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

С помощью команд IF и SHIFT можно в цикле обработать все параметры командной строки файла. Например, следующий КФ par.cmd выводит на экран имя запускаемого файла и все параметры командной строки:

Если запустить par.bat с двумя параметрами A B, на экран выведется следующая информация:

Рассмотрим условный оператор IF в общем виде:

IF [/I] строка1 оператор_сравнения строка2 команда

Форма записи операторов_сравнения представлена в табл. 2.

Источник

Интерпретатор командной строки операционной системы MS Windows

Вывод сообщений и дублирование команд, использование параметров командной строки. Локальные изменения переменных. Операторы перехода GOTO и вызова CALL. Проведение проверки наличия переменной среды. Циклы и связывание времени выполнения для переменных.

Подобные документы

История создания Microsoft-DOS, проблемы перехода с этой операционной системы в Microsoft Windows. Использование и характеристика основных команд, их атрибуты и программный код. Рассмотрение параметров и основных значений интерфейса командной строки.

контрольная работа, добавлен 26.07.2009

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

реферат, добавлен 20.03.2015

Утилиты командной строки Windows, предназначенные для контроля и мониторинга сетей, построенных на базе стека протоколов TCP/IP. Определение параметров и характеристик сети. Канальные и сетевые адреса и параметры, влияющие на работу сетевого уровня.

контрольная работа, добавлен 22.12.2010

Вложенные командные оболочки в Cmd.exe. Использование команды set для создания, удаления, отображения переменных среды. Новые способы выполнения типичных задач Windows XP и новые средства командной строки. Использование пакетных файлов и команды Netsh.

реферат, добавлен 25.06.2009

Cреда, эмулирующая DOS (командная строка) операционной системы Windows. Основные отличия работы из командной строки, особенности ее интерфейса. Работа с файловой системой. Функции систем управления файлами. Атрибуты файлов, внутренние команды Windows.

контрольная работа, добавлен 23.09.2012

Разработка программной библиотеки сервисного слоя, интерпретатора командной строки, слоя управления с внешних систем, пакета интеграции с внешними системами. Характеристики аппаратного обеспечения. Анализ реализации интерпретатора командной строки.

дипломная работа, добавлен 30.08.2016

Командная оболочка Bash. История команд. Использование переменных. Быстрая смена каталога. Настройка командной строки. Демонстрация возможностей утилиты tput. Шаблоны имен файлов. Потоки ввода-вывода. Группировка команд. Инициализационные файлы bash.

реферат, добавлен 04.06.2012

История развития операционной системы Windows. Характеристика ОС Windows 7, её версии, архитектура, реестр и файловая система. Новшества и изменения в Windows 7. Запуск и работа с командной строкой. Вызов и установка утилит в операционной системе.

курсовая работа, добавлен 11.05.2016

Сущность и значение строк в программировании, характеристика конструкторов класса String, StringBuilder, Character. Применение методов сравнения строк, специфика их модификации, замены и разбиения. Аргументы командной строки, текстовый ввод-вывод.

лекция, добавлен 26.04.2015

Функции на языке «C»: общая характеристика. Вызов функции с переменным числом параметров. Функция main, с которой начинается выполнение СИ-программы. Схема размещения параметров командной строки. Особенности вызова библиотечных функций _setargv и _seteuv.

контрольная работа, добавлен 24.03.2014

Источник

Интерпретатор командной строки операционной системы MS Windows

Вывод сообщений и дублирование команд, использование параметров командной строки. Локальные изменения переменных. Операторы перехода GOTO и вызова CALL. Проведение проверки наличия переменной среды. Циклы и связывание времени выполнения для переменных.

РубрикаПрограммирование, компьютеры и кибернетика
Видлабораторная работа
Языкрусский
Дата добавления22.11.2016
Размер файла45,9 K

лабораторная работа no2 интерпретатор командной строки ос ms windows. ba. лабораторная работа no2 интерпретатор командной строки ос ms windows фото. лабораторная работа no2 интерпретатор командной строки ос ms windows-ba. картинка лабораторная работа no2 интерпретатор командной строки ос ms windows. картинка ba. СКАЧАТЬ: os.zip (cкачиваний: 98)

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

На тему: «Интерпретатор командной строки операционной системы MS Windows»

1. Краткие теоретические сведения

1.1 Язык интерпретатора Cmd.exe. Командные файлы

1.1.1 Вывод сообщений и дублирование команд

1.1.2 Использование параметров командной строки

1.1.3 Работа с переменными среды

1.1.3.1 Получение значения переменной

1.1.4 Преобразования переменных как строк

1.1.5 Операции с переменными как с числами

1.1.6 Ввод значения переменной с клавиатуры

1.1.7 Локальные изменения переменных

1.1.8 Связывание времени выполнения для переменных

1.1.9 Приостановка выполнения командных файлов

1.1.10 Вызов внешних командных файлов

1.1.11 Операторы перехода GOTO и вызова CALL

1.1.12 Оператор проверки условия IF

1.1.12.1 Проверка значения переменной

1.1.12.2 Проверка существования заданного файла

1.1.12.3 Проверка наличия переменной среды

1.1.12.4 Проверка кода завершения предыдущей команды

1.1.13 Организация циклов

1.1.13.1 Циклы и связывание времени выполнения для переменных

1.1.13.2 Команда Findstr и ее использование в цикле

2. Методика выполнения

1. Краткие теоретические сведения

1.1 Язык интерпретатора Cmd.exe. Командные файлы

и запустить его на выполнение (аналогично исполняемым файлам с расширением com или exe), то мы удалим все файлы во временной директории Windows. Таким образом, исполнение командного файла приводит к тому же результату, что и последовательный ввод записанных в нем команд. При этом не проводится никакой предварительной компиляции или проверки синтаксиса кода; если встречается строка с ошибочной командой, то она игнорируется. Очевидно, что если приходится часто выполнять одни и те же действия, то использование командных файлов может сэкономить много времени.

1.1.1 Вывод сообщений и дублирование команд

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

REM Следующие две команды будут дублироваться на экране …

:: А остальные уже не будут

Для восстановления режима дублирования используется команда ECHO ON. Кроме этого, можно отключить дублирование любой отдельной строки в командном файле, написав в начале этой строки символ @, например:

:: Команда DIR C:\ дублируется на экране

Таким образом, если поставить в самое начало файла команду

то это решит все проблемы с дублированием команд.

В пакетном файле можно выводить на экран строки с сообщениями. Делается это с помощью команды

Команда ECHO. (точка должна следовать непосредственно за словом «ECHO») выводит на экран пустую строку. Например,

Часто бывает удобно для просмотра сообщений, выводимых из пакетного файла, предварительно полностью очистить экран командой CLS.

Используя механизм перенаправления ввода/вывода (символы > и >>), можно направить сообщения, выводимые командой ECHO, в определенный текстовый файл. Например:

ECHO Привет! > hi.txt

С помощью такого метода можно, скажем, заполнять файлы-протоколы с отчетом о произведенных действиях. Например:

REM Попытка копирования

XCOPY C:\PROGRAMS D:\PROGRAMS /s

:: Добавление сообщения в файл report.txt в случае удачного завершения копирования

IF NOT ERRORLEVEL 1 ECHO Успешное копирование >> report.txt

1.1.2 Использование параметров командной строки

При запуске пакетных файлов в командной строке можно указывать произвольное число параметров, значения которых можно использовать внутри файла. Это позволяет, например, применять один и тот же командный файл для выполнения команд с различными параметрами.

ECHO Файл %0 копирует каталог %1 в %2

Если запустить его из командной строки с двумя параметрами, например

copier.bat C:\Programs D:\Backup

то на экран выведется сообщение

Файл copier.bat копирует каталог C:\Programs в D:\Backup

и произойдет копирование каталога C:\Programs со всеми его подкаталогами в D:\Backup.

Пример 1. Пусть командный файл my.bat вызван из командной строки следующим образом:

При включении расширенной обработки команд SHIFT поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть числом от 0 до 9.

Например, в следующей команде SHIFT /2

параметр %2 заменяется на %3, %3 на %4 и т.д., а параметры %0 и %1 остаются без изменений.

Команда, обратная SHIFT (обратный сдвиг), отсутствует. После выполнения SHIFT уже нельзя восстановить параметр (%0), который был первым перед сдвигом. Если в командной строке задано больше десяти параметров, то команду SHIFT можно использовать несколько раз.

В командных файлах имеются некоторые возможности синтаксического анализа заменяемых параметров. Для параметра с номером n (%n) допустимы синтаксические конструкции (операторы), представленные в табл. 1.

Таблица 1. Операторы для заменяемых параметров

Переменная %n расширяется до полного имени файла

Из переменной %n выделяется только имя диска

Из переменной %n выделяется только путь к файлу

Из переменной %n выделяется только имя файла

Из переменной %n выделяется расширение имени файла

Возвращается дата и время создания (модификации) файла

Возвращается размер файла в байтах

Проводится поиск по каталогам, заданным в переменной среды PATH, и переменная %n заменяется на полное имя первого найденного файла. Если переменная PATH не определена или в результате поиска не найден ни один файл, эта конструкция заменяется на пустую строку. Естественно, здесь переменную PATH можно заменить на любое другое допустимое значение

Данные синтаксические конструкции можно объединять друг с другом, например:

1.1.3 Работа с переменными среды

Внутри командных файлов можно использовать так называемые переменными среды (или переменными окружения), каждая из которых хранится в оперативной памяти, имеет свое уникальное имя, а ее значением является строка. Стандартные переменные среды автоматически инициализируются в процессе загрузки операционной системы. Такими переменными являются:

WINDIR, которая определяет расположение каталога Windows,

TEMP, которая определяет путь к каталогу для хранения временных файлов Windows

PATH, в которой хранится системный путь (путь поиска), то есть список каталогов, в которых система должна искать выполняемые файлы или файлы совместного доступа (например, динамические библиотеки).

Кроме того, в командных файлах с помощью команды SET можно объявлять собственные переменные среды.

1.1.3.1 Получение значения переменной

Для получения значения определенной переменной среды нужно заключить имя этой переменной в символы %. Например:

:: Создание переменной MyVar

ECHO Значение переменной MyVar: %MyVar%

:: Удаление переменной MyVar

ECHO Значение переменной WinDir: %WinDir%

При запуске такого командного файла на экран выведется строка

Значение переменной MyVar: Привет!

Значение переменной WinDir: C:\WINDOWS

1.1.4 Преобразования переменных как строк

С переменными среды в командных файлах можно производить некоторые манипуляции. Во-первых, над ними можно производить операцию конкатенации (соединения). Для этого нужно в команде SET просто написать рядом значения соединяемых переменных. Например,

После выполнения в файле этих команд значением переменной C будет являться строка ‘РазДва’. Не следует для конкатенации использовать знак +, так как он будет воспринят просто в качестве символа. Например, после запуска файл следующего содержания

ECHO Переменная C=%C%

ECHO Переменная D=%D%

на экран выведутся две строки:

Во-вторых, из переменной среды можно выделять подстроки с помощью конструкции %имя_переменной:

новые переменные будут иметь такие значения: %dd1%=21, %dd2%=21, %mm%=12, %yyyy%=2009.

В-третьих, можно выполнять процедуру замены подстрок с помощью конструкции %имя_переменной:s1=s2% (в результате будет возвращена строка, в которой каждое вхождение подстроки s1 в соответствующей переменной среды заменено на s2). Например, после выполнения команд

в переменной b будет храниться строка «199456». Если параметр s2 не указан, то подстрока s1 будет удалена из выводимой строки, т.е. после выполнения команды

в переменной b будет храниться строка «1456».

1.1.5 Операции с переменными как с числами

При включенной расширенной обработке команд (этот режим в Windows XP используется по умолчанию) имеется возможность рассматривать значения переменных среды как числа и производить с ними арифметические вычисления (используются ТОЛЬКО целые числа). Для этого используется команда SET с ключом /A. Ниже приведен пример пакетного файла add.bat, складывающего два числа, заданных в качестве параметров командной строки, и выводящего полученную сумму на экран:

:: В переменной M будет храниться сумма

ECHO Сумма %1 и %2 равна %M%

:: Удалим переменную M

Рекомендуется при инициализации числовых переменных использовать ключ /A

1.1.6 Ввод значения переменной с клавиатуры

Ввод значения переменной при выполнении командного файла выполняется командой SET с ключом /P. Например, для ввода значения переменной M следует использовать команду

Текст подсказки [введите М] будет выведен на экран.

1.1.7 Локальные изменения переменных

Все изменения, производимые с помощью команды SET над переменными среды в командном файле, сохраняются и после завершения работы этого файла, но действуют только внутри текущего командного окна. Также имеется возможность локализовать изменения переменных среды внутри пакетного файла, то есть автоматически восстанавливать значения всех переменных в том виде, в каком они были до начала запуска этого файла. Для этого используются две команды: SETLOCAL и ENDLOCAL. Команда SETLOCAL определяет начало области локальных установок переменных среды. Другими словами, изменения среды, внесенные после выполнения SETLOCAL, будут являться локальными относительно текущего пакетного файла. Каждая команда SETLOCAL должна иметь соответствующую команду ENDLOCAL для восстановления прежних значений переменных среды. Изменения среды, внесенные после выполнения команды ENDLOCAL, уже не являются локальными относительно текущего пакетного файла; их прежние значения не будут восстановлены по завершении выполнения этого файла.

1.1.8 Связывание времени выполнения для переменных

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

и командный файл 2.bat:

Казалось бы, результат выполнения этих двух файлов должен быть одинаковым: на экран выведутся две строки: «a=1» и «a=2». На самом же деле таким образом сработает только файл 1.bat, а файл 2.bat два раза выведет строку «a=1».

Данную ошибку можно обойти, если для получения значения переменной вместо знаков процента (%) использовать восклицательный знак (!) и предварительно включить режим связывания времени выполнения командой SETLOCAL ENABLEDELAYEDEXPANSION. Таким образом, для корректной работы файл 2.bat должен иметь следующий вид:

ВНИМАНИЕ! Приведенный материал необходим для правильной работы команды цикла FOR и будет использован в командных файлах!

1.1.9 Приостановка выполнения командных файлов

Для того, чтобы вручную прервать выполнение запущенного bat-файла, нужно нажать клавиши + или +
. Однако часто бывает необходимо программно приостановить выполнение командного файла в определенной строке с выдачей запроса на нажатие любой клавиши. Это делается с помощью команды PAUSE. Перед запуском этой команды полезно с помощью команды ECHO информировать пользователя о действиях, которые он должен произвести. Например:

ECHO Вставьте дискету в дисковод A: и нажмите любую клавишу

Команду PAUSE обязательно нужно использовать при выполнении потенциально опасных действий (удаление файлов, форматирование дисков и т.п.). Например,

ECHO Сейчас будут удалены все файлы в C:\Мои документы!

ECHO Для отмены нажмите Ctrl-C

DEL «C:\Мои документы\*.*»

1.1.10 Вызов внешних командных файлов

Из одного командного файла можно вызвать другой, просто указав его имя. Например:

REM Вывод списка log-файлов

:: Передача выполнения файлу f.bat

Однако в этом случае после выполнения вызванного файла управление в вызывающий файл не передается, то есть в приведенном примере команда

(и все следующие за ней команды) никогда не будет выполнена.

Для того, чтобы вызвать внешний командный файл с последующим возвратом в первоначальный файл, нужно использовать специальную команду CALL файл

:: Вывод списка log-файлов

:: Передача выполнения файлу f.bat

В этом случае после завершения работы файла f.bat управление вернется в первоначальный файл на строку, следующую за командой CALL (в нашем примере это команда COPY A:\*.* C:\).

1.1.11 Операторы перехода GOTO и вызова CALL

Командный файл может содержать метки и команды GOTO перехода к этим меткам. Любая строка, начинающаяся с двоеточия :, воспринимается при обработке командного файла как метка. Имя метки задается набором символов, следующих за двоеточием до первого пробела или конца строки.

Пример 3. Пусть имеется командный файл следующего содержания:

ECHO Эта строка никогда не выполнится

После того, как в этом файле мы доходим до команды

его выполнение продолжается со строки

В команде перехода внутри файла GOTO можно задавать в качестве метки перехода строку :EOF, которая передает управление в конец текущего пакетного файла (это позволяет легко выйти из пакетного файла без определения каких-либо меток в самом его конце).

Для перехода к метке внутри текущего командного файла кроме команды GOTO можно использовать и рассмотренную выше команду CALL:

CALL :метка аргументы

При вызове такой команды создается новый контекст текущего пакетного файла с заданными аргументами, и управление передается на инструкцию, расположенную сразу после метки. Для выхода из такого пакетного файла необходимо два раза достичь его конца. Первый выход возвращает управление на инструкцию, расположенную сразу после строки CALL, а второй выход завершает выполнение пакетного файла. Например, если запустить с параметром «Копия-1» командный файл следующего содержания:

то на экран выведутся три строки:

Таким образом, подобное использование команды CALL похоже на вызов подпрограмм в языках высокого уровня.

1.1.12 Оператор проверки условия IF

С помощью команды IF … ELSE (ключевое слово ELSE может отсутствовать) в пакетных файлах можно выполнять обработку условий нескольких типов. При этом если заданное после IF условие принимает истинное значение, система выполняет следующую за условием команду (или несколько команд, заключенных в круглые скобки), в противном случае выполняется команда (или несколько команд в скобках), следующие за ключевым словом ELSE.

1.1.12.1 Проверка значения переменной

Первый тип условия используется обычно для проверки значения переменной. Для этого применяются два варианта синтаксиса команды IF:

IF [NOT] строка1==строка2 команда1 [ELSE команда2]

(квадратные скобки указывают на необязательность заключенных в них параметров) или

IF [/I] [NOT] строка1 оператор_сравнения строка2 команда

if %1 GTR %2 (echo %1 ) else (echo %2)

Строки могут быть литеральными или представлять собой значения переменных (например, %1 или %TEMP%). Кавычки для литеральных строк не требуются. Например, командный строка локальный оператор

IF %1==%2 ECHO Параметры совпадают!

Отметим, что при сравнении строк, заданных переменными, следует проявлять определенную осторожность. Дело в том, что значение переменной может оказаться пустой строкой, и тогда может возникнуть ситуация, при которой выполнение командного файла аварийно завершится. Например, если вы не определили с помощью команды SET переменную MyVar, а в файле имеется условный оператор типа

IF %MyVar%==C:\ ECHO Ура.

то в процессе выполнения вместо %MyVar% подставится пустая строка и возникнет синтаксическая ошибка. Такая же ситуация может возникнуть, если одна из сравниваемых строк является значением параметра командной строки, так как этот параметр может быть не указан при запуске командного файла. Поэтому при сравнении строк нужно приписывать к ним в начале какой-нибудь символ, например:

С помощью команд IF и SHIFT можно в цикле обрабатывать все параметры командной строки файла, даже не зная заранее их количества. Например, следующий командный файл (назовем его primer.bat) выводит на экран имя запускаемого файла и все параметры командной строки:

ECHO Выполняется файл: %0

ECHO Файл запущен со следующими параметрами.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *