Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Использование параметров командной строки
При запуске пакетных файлов в командной строке можно указывать произвольное число параметров, значения которых можно использовать внутри файла. Это позволяет, например, применять один и тот же командный файл для выполнения команд с различными параметрами. Для доступа из командного файла к параметрам командной строки применяются символы %0, %1, …, %9 или %*. При этом вместо подставляется имя выполняемого пакетного файла, вместо %0%1, %2, …, %9 — значения первых девяти параметров командной строки соответственно, а вместо %* — все аргументы. Если в командной строке при вызове пакетного файла задано меньше девяти параметров, то " лишние" переменные из %1 – %9 замещаются пустыми строками. Рассмотрим следующий пример. Пусть имеется командный файл copier.bat следующего содержания: @ECHO OFF CLS ECHO File %0 copying directory %1 in %2 XCOPY %1 %2 /S Если запустить его из командной строки с двумя параметрами, например copier.bat C: \Programs D: \Backup то на экран выведется сообщение File copier.bat copying directory C: \Programs in D: \Backup и произойдет копирование каталога C: \Programs со всеми его подкаталогами в D: \Backup. При необходимости можно использовать более девяти параметров командной строки. Это достигается с помощью команды SHIFT, которая изменяет значения замещаемых параметров с %0 по %9, копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0, значение %2 – в %1 и т.д. Замещаемому параметру %9 присваивается значение параметра, следующего в командной строке за старым значением %9. Если же такой параметр не задан, то новое значение %9 — пустая строка. Рассмотрим пример. Пусть командный файл my.bat вызван из командной строки следующим образом: my.bat p1 p2 p3 Тогда %0=my.bat, %1=p1, %2=p2, %3=p3, параметры %4 – %9 являются пустыми строками. После выполнения команды SHIFT значения замещаемых параметров изменятся следующим образом: %0=p1, %1=p2, %2=p3, параметры %3 – %9 – пустые строки. При включении расширенной обработки команд SHIFT поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть числом от 0 до 9. Например, в следующей команде: SHIFT /2 параметр %2 заменяется на %3, %3 на %4 и т.д., а параметры %0 и %1 остаются без изменений. Команда, обратная SHIFT (обратный сдвиг), отсутствует. После выполнения SHIFT уже нельзя восстановить параметр (%0), который был первым перед сдвигом. Если в командной строке задано больше десяти параметров, то команду SHIFT можно использовать несколько раз. В командных файлах имеются некоторые возможности синтаксического анализа заменяемых параметров. Для параметра с номером n (%n) допустимы синтаксические конструкции (операторы), представленные в табл. Данные синтаксические конструкции можно объединять друг с другом, например: %~DPn — из переменной %n выделяется имя диска и путь, %~NXn — из переменной %n выделяется имя файла и расширение. Рассмотрим следующий пример. Пусть мы находимся в каталоге C: \TEXT и запускаем пакетный файл с параметром Рассказ.doc (%1=Рассказ.doc). Тогда применение операторов, описанных в табл., к параметру %1 даст следующие результаты: %~F1=C: \TEXT\Рассказ.doc %~D1=C: %~P1=\TEXT\ %~N1=Рассказ %~X1=.doc %~DP1=C: \TEXT\ %~NX1=Рассказ.doc Задача 3. 3.1 Создать в C: \Temp пакетный файл spr.bat, который при запуске его с параметром (параметр – имя соответствующей команды) создает текстовый файл, который должен содержать справку по данной команде команде (например, при запуске spr if – в C: \Temp должен быть создан файл if.txt, содержащий описание этой команды). Создать с помощью пакетного файла spr.bat текстовые файлы if.txt, goto.txt, for.txt, rem.txt, echo.txt. 3.2 Создать командный файл find.bat, который ищет в системных каталогах и выводит на экран полное путевое имя программ notepad.exe и calc.exe 3.3. Написать командный файл, который принимает три имени файла в качестве параметров и трижды сдвигает эти параметры, а затем выводит на экран содержимое первого параметра. Операции с переменными Из переменной среды можно выделять подстроки с помощью конструкции %имя_переменной: ~n1, n2%, где число n1 определяет смещение (количество пропускаемых символов) от начала (если n1 положительно) или от конца (если n1 отрицательно) соответствующей переменной среды, а число n2 – количество выделяемых символов (если n2 положительно) или количество последних символов в переменной, которые не войдут в выделяемую подстроку (если n2 отрицательно). Если указан только один отрицательный параметр - n, то будут извлечены последние n символов. Например, если в переменной хранится строка " 21.09.2007" (символьное представление текущая дата при определенных региональных настройках), то после выполнения следующих команд SET dd1=%DATE: ~0, 2% SET dd2=%DATE: ~0, -8% SET mm=%DATE: ~-7, 2% SET yyyy=%DATE: ~-4% новые переменные будут иметь такие значения: %dd1%=21, %dd2%=21, %mm%=09, %yyyy%=2007. В-третьих, можно выполнять процедуру замены подстрок с помощью конструкции %имя_переменной: s1=s2% (в результате будет возвращена строка, в которой каждое вхождение подстроки s1 в соответствующей переменной среды заменено на s2 ). Например, после выполнения команд SET a=123456 SET b=%a: 23=99% в переменной b будет храниться строка " 199456". Если параметр s2 не указан, то подстрока s1 будет удалена из выводимой строки, т.е. после выполнения команды SET a=123456 SET b=%a: 23=% в переменной b будет храниться строка " 1456" При включенной расширенной обработке команд (этот режим в Windows XP используется по умолчанию) имеется возможность рассматривать значения переменных среды как числа и производить с ними арифметические вычисления. Для этого используется команда SET с ключом /A. Приведем пример пакетного файла add.bat, складывающего два числа, заданных в качестве параметров командной строки, и выводящего полученную сумму на экран: @ECHO OFF REM В переменной M будет храниться сумма SET /A M=%1+%2 ECHO Sum of %1 and %2 is %M% Без ключа /A значения переменных рассматриваются как строки и числовые операции производиться не будут. Задача 4.
4.1 Создать файл add1.bat, выполняющий сложение двух значений в виде чисел и создать файл add2.bat, в котором у команды set отсутствует ключ /A. Выполнить оба файла и проанализировать результат.
РЕШЕНИЕ:
Задача 1. 1.1. Primer1.bat @ echo off Rem Приветствие echo Privet! Primer2.bat @echo off |
Последнее изменение этой страницы: 2019-03-30; Просмотров: 532; Нарушение авторского права страницы