Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Пакетные файлы (ПФ) могут создаваться с помощью любого текстового редактора либо командой

Поиск

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

по дисциплине “Операционные системы, среды и оболочки”

Создание пакетных файлов

Цель работы:

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

 

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

Пакетные файлы (ПФ) могут создаваться с помощью любого текстового редактора либо командой

COPY CON <имя файла>.BAT

Например, если записать в файл deltmp.bat следующие команды:

C:\

CD %TEMP%

DEL /F *.tmp

И запустить его на выполнение (набрать в командной строке deltmp.bat), то удалятся все файлы во временной директории Windows. Таким образом, исполнение командного файла приводит к тому же результату, что и последовательный ввод записанных в нем команд. Очевидно, что если приходится часто выполнять одни и те же действия, то использование командных файлов может сэкономить много времени.

Пакетный файл, состоящий из двух команд вызова

calc.exe

notepad.exe

Вызовет стандартный Калькулятор, а при его закрытии вызовет Блокнот.

Общие правила оформления пакетных файлов:

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

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

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

· метка всегда содержится в отдельной строке и начинается с двоеточия,

· при запуске каждой программы вырабатывается код ошибки выполнения – переменная errorlevel. В случае отсутствия ошибки errorlevel =0,

· существование любого файла можно проверить с помощью операции exist:

значение операции exist имя файла равно True, если указанный файл существует.

· для прекращения выполнения ПФ необходимо нажать клавиши CTRL+C;

· в ПФ можно использовать символы переназначения ввода/вывода и конвейер команд;

 

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

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

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

@ECHO OFF

ECHO Привет!

ECHO.

ECHO Пока!

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

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

@ECHO OFFECHO Привет! > hi.txtECHO Пока! >> hi.txt

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

@ECHO OFFREM Попытка копированияXCOPY C:\PROGRAMS D:\PROGRAMS /sREM Добавление сообщения в файл report.txt в случаеREM удачного завершения копированияIF NOT ERRORLEVEL 1 ECHO Успешное копирование >> report.txt

Символы условной обработки

Символы условной обработки используются для ввода несколько команд одновременно и управления работой команд в зависимости от результатов их выполнения:

· Амперсанд (&) разделяет несколько команд в одной командной строке.

  • Скобки группируют несколько команд.
  • Точка с запятой и запятая (;,) разделяют параметры команд.
  • Символ (^) отменяет специальное использование управляющего символа, и управляющий символ можно использовать в тексте.
  • Двойной амперсанд (&&) запускает команду, стоящую за ним в командной строке, только если команда, стоящая перед этим символом была выполнена успешно.
  • Двойной символ канала (||) запускает команду, стоящую за этим символом, только если команда, идущая перед ним не была успешно выполнена.

Передача данных в командный файл

Довольно часто возникает необходимость создать один пакетный файл, но выполнять его каждый раз с различными данными. Возможны два способа передачи данных в пакетный файл:

· с помощью списка замещаемых параметров,

· с помощью системных переменных.

Замещаемые параметры командной строки. При использовании первого способа в тексте пакетного файла используются формальные параметры, имеющие имена %0, %2, …%9. Реальные значения этим параметрам присваиваются с помощью фактических параметров, которые указываются при запуске пакетного файла через пробелы:

<имя пакетного файла> <параметр1> <параметр2>.. <параметр9>

При выполнении пакетного файла формальный параметр %1 получает значение (замещается) <параметр1>, формальный параметр %2 получает значение <параметр2> и т.д. В формальном параметре %0 хранится имя самого пакетного файла.

Если в командной строке при вызове пакетного файла задано меньше девяти параметров, то "лишние" переменные из %1 – %9 замещаются пустыми строками.

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

@ECHO OFFCLSECHO Файл %0 копирует каталог %1 в %2XCOPY %1 %2 /S

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

copier.bat C:\Programs D:\Backup

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

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

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

Cls

Set /P name= “Input your name:”

Echo Hello, %name%

При выполнении этого пакетного файла на экран будет выведено сообщение Input your name:. Если в ответ ввести Piter, то это будет значением переменной name. Таким образом, результатом работы приведенного пакетного файла будет:

Input your name: Piter

Hello, Piter

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

В пакетных файлах можно работать с системными переменными, заключая их имена в знак %. Например,

@ECHO OFFCLSREM Создание переменной MyVarSET MyVar=ПриветREM Изменение переменнойSET MyVar=%MyVar%!ECHO Значение переменной MyVar: %MyVar% REM Удаление переменной MyVarSET MyVar=ECHO Значение переменной WinDir: %WinDir%

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

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

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

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

SET A=Раз SET B=Два SET C=%A%%B%

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

SET A=Раз SET B=Два SET C=A+B ECHO Переменная C=%C% SET D=%A%+%B% ECHO Переменная D=%D%

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

Переменная C=A+BПеременная D=Раз+Два

Команда CALL

Назначение: вызывает пакетный файл из другого пакетного файла.

Формат: call [< путь доступа к файлу> ] < имя файла > [< параметры >]

Параметры:

< имя файла > - имя вызываемого ПФ;

< параметры >- параметры, передаваемые вызываемому ПФ;

Выполнение: по завершении выполнения вызываемого пакетного файла управление возвращается в вызывающий ПФ.

Пример:

CALL sam.bat - вызов пакетного файла sam.bat из текущего каталога.

 

Команда PAUSE

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

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

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

ECHO Сейчас будут удалены все файлы в C:\Мои документы!ECHO Для отмены нажмите Ctrl-CPAUSEDEL "C:\Мои документы\*.*"

 

Команда GOTO

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

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

@ECHO OFFCOPY %1 %2GOTO Label1ECHO Эта строка никогда не выполнится:Label1REM Продолжение выполненияDIR %2После того, как в этом файле мы доходим до команды GOTO Label1 его выполнение продолжается со строки REM Продолжение выполнения

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

Пример. Если в командном файле заданы строки

@ECHO OFFFOR %%i IN (Раз,Два,Три) DO ECHO %%i

то в результате его выполнения на экране будет напечатано следующее:

РазДваТри

Параметр множество в команде FOR задает одну или более текстовых строк, разделенных запятыми, которые вы хотите обработать с помощью заданной команды. Скобки здесь обязательны. Параметр команда [параметры] задает команду, выполняемую для каждого элемента множества, при этом вложенность команд FOR на одной строке не допускается. Если в строке, входящей во множество, используется запятая, то значение этой строки нужно заключить в кавычки. Например, в результате выполнения файла с командами

@ECHO OFFFOR %%i IN ("Раз,Два",Три) DO ECHO %%i

На экран будет выведено

Раз,ДваТри

Параметр %%переменная представляет подставляемую переменную (счетчик цикла), причем здесь могут использоваться только имена переменных, состоящие из одной буквы или цифры. При выполнении команда FOR заменяет подставляемую переменную текстом каждой строки в заданном множестве, пока команда, стоящая после ключевого слова DO, не обработает все такие строки.

Чтобы избежать путаницы с параметрами командного файла %0 — %9, для переменных следует использовать любые символы кроме 0 – 9.

Параметр множество в команде FOR может также представлять одну или несколько групп файлов. Например, чтобы вывести в файл список всех файлов с расширениями txt и prn, находящихся в каталоге C:\TEXT, без использования команды DIR, можно использовать командный файл следующего содержания:

@ECHO OFFFOR %%f IN (C:\TEXT\*.txt, C:\TEXT\*.prn) DO ECHO %%f >> list.txt

При таком использовании команды FOR процесс обработки продолжается, пока не обработаются все файлы (или группы файлов), указанные во множестве.

Цикл FOR /D … IN … DO …

Следующий вариант команды FOR реализуется с помощью ключа /D:

FOR /D %переменная IN (набор) DO команда [параметры]

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

@ECHO OFFCLSFOR /D %%f IN (C:\*.*) DO ECHO %%f

получим список всех каталогов на диске C:, например:

C:\ArcC:\CYRC:\MSCANC:\NCC:\Program FilesC:\TEMPC:\TeXC:\WINNT

Цикл FOR /R … IN … DO …

С помощью ключа /R можно задать рекурсию в команде: FOR:

FOR /R [[диск:]путь] %переменная IN (набор) DO команда [параметры]

В этом случае заданная команда выполняется для каталога [диск:]путь, а также для всех подкаталогов этого пути. Если после ключа R не указано имя каталога, то выполнение команды начинается с текущего каталога. Например, для распечатки всех файлов с расширением txt в текущем каталоге и всех его подкаталогах можно использовать следующий пакетный файл:

@ECHO OFFCLSFOR /R %%f IN (*.txt) DO PRINT %%f

Если вместо набора указана только точка (.), то команда проверяет все подкаталоги текущего каталога. Например, если мы находимся в каталоге C:\TEXT с двумя подкаталогами BOOKS и ARTICLES, то в результате выполнения файла:

на экран выведутся три строки:C:\TEXT\.C:\TEXT\BOOKS\.C:\TEXT\ARTICLES\.

Цикл FOR /L … IN … DO …

Ключ /L позволяет реализовать с помощью команды FOR цикл с известным числом повторений, в этом случае синтаксис имеет следующий: вид:

FOR /L %переменная IN (начало, шаг, конец) DO команда [параметры]

Здесь заданная после ключевого слова IN тройка (начало,шаг,конец) раскрывается в последовательность чисел с заданными началом, концом и шагом приращения. Так, набор (1,1,5) раскрывается в (1 2 3 4 5), а набор (5,-1,1) заменяется на (5 4 3 2 1). Например, в результате выполнения следующего командного файла:

@ECHO OFFCLSFOR /L %%f IN (1,1,5) DO ECHO %%f

переменная цикла %%f пробежит значения от 1 до 5, и на экране напечатаются пять чисел:

12345

Числа, получаемые в результате выполнения цикла FOR /L, можно использовать в арифметических вычислениях. Рассмотрим командный файл my.bat следующего содержания:

@ECHO OFFCLSFOR /L %%f IN (1,1,5) DO CALL:2 %%fGOTO:EOF:2SET /A M=10*%1ECHO 10*%1=%M%

В третьей строке в цикле происходит вызов нового контекста файла my.bat с текущим значением переменной цикла %%f в качестве параметра командной строки, причем управление передается на метку:2 (см. описание CALL в разделе "Изменения в командах перехода"). В шестой строке переменная цикла умножается на десять, и результат записывается в переменную M. Таким образом, в результате выполнения этого файла выведется следующая информация:

10*1=10

10*2=20

10*3=30

10*4=40

10*5=50

Цикл FOR /F … IN … DO …

Самые мощные возможности (и одновременно самый запутанный синтаксис) имеет команда: FOR с ключом /F:

FOR /F ["ключи"] %переменная IN (набор) DO команда [параметры]

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

По умолчанию ключ /F выделяет из каждой строки файла первое слово, очищенное от окружающих его пробелов. Пустые строки в файле пропускаются. Необязательный параметр "ключи" служит для переопределения заданных по умолчанию правил обработки строк. Ключи представляют собой заключенную в кавычки строку, содержащую приведенные в таблице ключевые слова:

Ключи в команде FOR /F
Ключ Описание
EOL=C Определение символа комментариев в начале строки (допускается задание только одного символа)
SKIP=N Число пропускаемых при обработке строк в начале файла
DELIMS=XXX Определение набора разделителей для замены заданных по умолчанию пробела и знака табуляции
TOKENS=X,Y,M-N Определение номеров подстрок, выделяемых из каждой строки файла и передаваемых для выполнения в тело цикла

При использовании ключа TOKENS=X,Y,M-N создаются дополнительные переменные. Формат M-N представляет собой диапазон подстрок с номерами от M до N. Если последний символ в строке TOKENS= является звездочкой, то создается дополнительная переменная, значением которой будет весь текст, оставшийся в строке после обработки последней подстроки.

Разберем применение этой команды на примере пакетного файла parser.bat, который производит разбор файла myfile.txt:

@ECHO OFFIF NOT EXIST myfile.txt GOTO:NoFileFOR /F "EOL=; TOKENS=2,3* DELIMS=, " %%i IN (myfile.txt) DO @ECHO %%i %%j %%kGOTO:EOF:NoFileECHO Не найден файл myfile.txt!

Здесь во второй строке производится проверка наличия файла myfile.txt; в случае отсутствия этого файла выводится предупреждающее сообщение. Команда FOR в третьей строке обрабатывает файл myfile.txt следующим образом:

Пропускаются все строки, которые начинаются с символа точки с запятой (EOL=;).

Вторая и третья подстроки из каждой строки передаются в тело цикла, причем подстроки разделяются пробелами (по умолчанию) и/или запятыми (DELIMS=,).

В теле цикла переменная %%i используется для второй подстроки, %%j — для третьей, а %%k получает все оставшиеся подстроки после третьей.

В нашем примере переменная %%i явно описана в инструкции FOR, а переменные %%j и %%k описываются неявно с помощью ключа TOKENS=. Например, если в файле myfile.txt были записаны следующие три строки:

ААА ББББ ВВВВ,ГГГГГ ДДДДЕЕЕЕЕ,ЖЖЖЖ ЗЗЗЗ;КККК ЛЛЛЛЛ МММММ

то в результате выполнения пакетного файла parser.bat на экран выведется следующее:

ББББ ВВВВ ГГГГГ ДДДДЖЖЖЖ ЗЗЗЗ

Замечание. Ключ TOKENS= позволяет извлечь из одной строки файла до 26 подстрок, поэтому запрещено использовать имена переменных, начинающиеся не с букв английского алфавита (a–z). Следует помнить, что имена переменных FOR являются глобальными, поэтому одновременно не может быть активно более 26 переменных.

Команда FOR /F также позволяет обработать отдельную строку. Для этого следует ввести нужную строку в кавычках вместо набора имен файлов в скобках. Строка будет обработана так, как будто она взята из файла. Например, файл следующего содержания:

@ECHO OFFFOR /F "EOL=; TOKENS=2,3* DELIMS=, " %%i IN ("ААА ББББ ВВВВ,ГГГГГ ДДДД") DO @ECHO %%i %%j %%k

Содержание работы

Задание 1. Анализ пакетного файла

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

@echo off

if -%1==- goto no_param

if not exist %1 goto not_tex

type %1

Goto exit

:no_param

echo Must be parameter!

Goto exit

:not_tex

echo File %1 is not find!

:exit

Сохраните файл в своей папке, дав ему имя my_type.bat.

· Создайте любой текстовый файл (не более 10 строк), например, с помощью редактора текста, встроенного в Windows Commander (Shift+F4) и сохраните в той же папке.

· В режиме командной строки запустите файл my_type.bat, указав имя своего текстового файла через пробел, например

my_type.bat myText.txt

Отладьте пакетный файл для всех возможных вариантов его выполнения.

· Введите комментарии, поясняющие работу команд файла (комментарий начинается со слова Rem с последующим пробелом).

Задание 2. Изменение пакетного файла

Измените пакетный файл из задания 1:

· используйте команду if в виде ЕСЛИ…ТО…ИНАЧЕ и один из операторов сравнения (EQL, NEQ),

· имя файла для вывода на экран вводите в диалоге с помощью команды SET с ключом /P и системной переменной, например:

Задание 3. Создание пакетного файла

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

 

Контрольные вопросы

 

4.1 Отличие ПФ от других исполняемых файлов.

4.2 Способы передачи данных в ПФ.

4.3 Специальные команды ПФ.

4.4 Циклическое исполнение команд в ПФ.

4.5 Организация ветвлений в ПФ.

 

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

по дисциплине “Операционные системы, среды и оболочки”

Создание пакетных файлов

Цель работы:

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

 

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

Пакетные файлы (ПФ) могут создаваться с помощью любого текстового редактора либо командой

COPY CON <имя файла>.BAT

Например, если записать в файл deltmp.bat следующие команды:

C:\

CD %TEMP%

DEL /F *.tmp

И запустить его на выполнение (набрать в командной строке deltmp.bat), то удалятся все файлы во временной директории Windows. Таким образом, исполнение командного файла приводит к тому же результату, что и последовательный ввод записанных в нем команд. Очевидно, что если приходится часто выполнять одни и те же действия, то использование командных файлов может сэкономить много времени.



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 1297; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.15.22 (0.008 с.)