Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




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

Для доступа к параметрам командной строки применяются символы %0, %1,…,%9. Вместо %0 подставляется имя выполняемого пакетного файла, а вме­сто %1, %2,…, %9 — значения первых девяти параметров командной строки соответственно Если в командной строке при вызове пакетного файла зада­но меньше девяти параметров, то "лишние" переменные из %1 - %9 являются пустыми строками. Рассмотрим следующий пример. Пусть имеется командный файл copier.bat такого содержания

 

@ECHO OFF

CLS

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

XCOPY %1 %2 /S

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

copier.bat C:\Programs D:\Backup

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

 

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

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

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

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

my.bat p1 р2 р3

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

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

С помощью команды set внутри командных файлов можно работать с пере­менными среды, в том числе объявлять собственные переменные. В Windows все пере­менные среды рассматриваются как строки и для получения их значений нужно имя соответствующей переменной заключить в символы %. Например,

@ECHO OFF

CLS

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

SET MyVar=Привет

REM Изменение переменной

SET MyVar=%MyVar%

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

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

SET MyVar=

 

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

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

 

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

 

@ECHO OFF

CLS

ECHO Каталог Windows: %WinDir%

ECHO Каталог для временных файлов: %TEMP%

 

При включенной расширенной обработке команд имеется возможность рассматривать переменные среды как числа и производить с ними арифметические вычисления. Для этого используется команда set с ключом /а. Приведем пример пакетного файла add.bat, складывающего два числа, заданных в качестве параметров командной строки, и выводящего полученную сумму на экран:

@ЕСНО OFF

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

SET /А М=%1+%2

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

REM Удалим переменную М

SET M=

Напомним, что все изменения, производимые с помощью команды set над переменными среды в командном файле, сохраняются и после завершения работы этого файла, но действуют только внутри текущего командного окна. В Windows имеется возможность локализовать изменения переменных среды внутри пакетного файла, т. е. автоматически восстанавливать значе­ния всех переменных в том виде, в каком они были до начала запуска данного файла. Для этого используются две команды: setlocal и endlocal. Команда setlocal определяет начало области локальных установок переменных среды. Другими словами, изменения среды, внесенные после выполнения setlocal, будут являться локальными относительно текущего па­кетного файла. Каждая команда setlocal должна иметь соответствующую команду endlocal для восстановления прежних значений переменных среды. Изменения среды, внесенные после выполнения команды endlocal, уже не являются локальными относительно текущего пакетного файла; их прежние значения не будут восстановлены по завершении выполнения этого файла.

Рассмотрим пример командного файла super.bat, который запускает приложение superApp, записывает вывод в файл c:\superapp.out и загружает этот файл в программу Notepad:

 

@ЕСНО OFF

REM Запоминаем значения переменных среды

SETLOCAL

REM Добавляем к переменной PATH путь

REM к каталогу G:\programs\superapp

PATH=G:\programs\superapp,%РАТН%

RЕМ Запускаем приложение

CALL superapp>c:\superapp.out

REM Восстанавливаем значения переменных среды

ENDLOCAL

REM Загружаем полученный файл в Блокнот

START notepad C:\superapp.out

 

При включении расширенной обработки команд у SETLOCAL можно указывать необязательный аргумент, который может иметь значения ENABLEEXTENSIONS или DISABLEEXTENSIONS. Это позволяет временно включить или отключить расширенную обработку команд до выполнения команды ENDLOCAL, независимо от исходного состояния режима обработки команд до вызова команды.

SETLOCAL

Если команда setlocal вызывается с аргументом, то она устанавливает код ошибки ERRORLEVEL. Если указан один из двух допустимых аргументов, то код ошибки будет равен нулю, иначе возвращается значение 1. Это свойство можно использовать в пакетных файлах, чтобы определить доступность расширенной обработки команд, например

XCOPY Б: > NUL

SETLOCAL ENABLEEXTENSIONS

IF ERRORLEVEL 1 ECHO He удается включить расширенную обработку

 

В данном примере команда XCOPY с недопустимым аргументом Б: необходи­ма для установки ненулевого значения errorlevel, т к в прежних версиях интерпретатора cmd.exe команда setlocal не устанавливает код ошибки.

Перейдем теперь к рассмотрению заменяемых параметров командной строки (%0, %1 и т.д.) В пакетных файлах Windows работа с этими парамет­рами становится более удобной.

Во-первых, с помощью символов %* в пакетном файле можно обозначить все аргументы (%1 %2 %3 %4 %5) Таким образом, запустив следующий па­кетный файл

@ЕСНО OFF

ECHO Файл запущен с параметрами: % *

 

с параметрами а в с, мы на экране получим следующее сообщение-файл запущен с параметрами: ABC

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

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

Операторы Описание

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

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

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

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

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

%~Sn Значение операторов N и х для переменной °п изменяется так, что

они работают с кратким именем файла

 

%~$РАТН:n Проводится поиск по каталогам, заданным в переменной среды PATH, и переменная %n заменяется на полное имя первого най­денного файла Если переменная path не определена или в ре­зультате поиска не найден ни один файл, эта конструкция заме­няется на пустую строку Естественно, здесь переменную PATH можно заменить на любое другое допустимое значение

 

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

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

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

 

Рассмотрим следующий пример. Пусть мы находимся в каталоге с:\техт и запускаем пакетный файл с параметром Рассказ.doc (0%1=Рассказ.dос). Тогда применение операторов, описанных в табл 4 1, к параметру %1 даст следующие результаты

%~Fl=C:\TEXT\Paccказ.doc

%~D1=C:

%~Р1=\ТЕХТ\

%~Xl=.doc

%DPl=C.\TEXT\

%NХ1=Рассказ.doc

 

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

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

SHIFT /2

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

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...