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



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

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.

При необходимости использования более 10 параметров, необходимо воспользоваться командой SHIFT.

Символ “%” можно использовать в командах внутри пакетного файла, но при этом необходимо повторить его дважды. Например, имя файла f%.exe должно выглядеть как f%%.exe.

При использовании второго способа (глобальных переменных) перед запуском пакетного файла с помощью команды SET необходимо создать глобальные переменные (это будут пользовательские системные переменные) и присвоить им заданные значения. Имена этих переменных при использовании в командах пакетного файла заключаются в символы “%” (например, %FILE%).

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

Дополнительные возможности для замещаемых параметров
Обозначение Описание
%~Fn Переменная %n расширяется до полного имени файла
%~Dn Из переменной %n выделяется только имя диска
%~Pn Из переменной %n выделяется только путь к файлу
%~Nn Из переменной %n выделяется только имя файла
%~Xn Из переменной %n выделяется расширение имени файла
%~Sn Значение операторов N и X для переменной %n изменяется так, что они работают с кратким именем файла
%~$PATH:n Проводится поиск по каталогам, заданным в переменной среды PATH, и переменная %n заменяется на полное имя первого найденного файла. Если переменная PATH не определена или в результате поиска не найден ни один файл, эта конструкция заменяется на пустую строку. Естественно, здесь переменную PATH можно заменить на любое другое допустимое значение

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

%~DPn — из переменной %n выделяется имя диска и путь,

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

Например, пусть запускаемый пакетный файл находится в каталоге C:\TEXT и запускается с параметром Story.doc (%1=Story.doc). Тогда применение параметров замещения, описанных выше к параметру %1 даст следующие результаты:

%~F1 = C:\TEXT\Story.doc%~D1 = C:%~P1 = \TEXT\%~N1 = Story%~X1 =.doc%~DP1 = C:\TEXT\%~NX1 = Story.doc

Передача данных в командный файл через системные переменные. В этом случае возможен ввод значения при исполнении пакетного файла с помощью команды SET с ключом /P:

SET /P <имя системной переменной> = [строка приглашения]

Необязательный параметр Строка приглашения – заключенный в кавычки текст. Имена системных переменных при обращении к ним должны заключаться в знаки %.

Пример:

@echo off

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


Поделиться:


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

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