Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
1. Создать командный файл fff1.BAT, который принимает от пользователя число, умножает его на 5 и выводит результат в консольное окно, а именно:
Теперь модифицируем пример с умножением на 5 введенное нами число, просто, если вдруг пользователь введет ноль, мы выведем соответствующие сообщение и попросим ввести заново число.
В рассматриваемом примере при сравнении переменной «z» используется оператор сравнения == (два равно), так как просто равно (=) это оператор присваивания. Также здесь используется оператор goto т.е. переход к нужной метке. Другими словами ставим метку и в зависимости от результата проверки условия, будет осуществлен переход к нужной метке.
Измени файл таким образом, чтобы он принимал от пользователя 2 числа х, у и выводил следующие результаты:
z1=x-y; z2=x+y; z3=x/y; z4=2x2/(y3+8); z5=8-12/(4x4-y5).
Предусмотреть возможность ошибки деления на ноль!
2. Создать командный файл fff2.BAT, который принимает от пользователя 3 числа: a, b, c и возвращает результат решения квадратного уравнения:
аx 2+ bx + c =0.
3. Как и в других полноценных языках в bat-файлах можно использовать оператор условного выполнения IF. Приведем пример, в котором интерпретатор проверяет, существует файл с заданным именем или нет:
IF EXIST test.txt – это проверка на наличие файла.
Далее, в скобках, идет то, что мы хотим сделать, если файл существует, а если файла не существует то после ELSE, идет то, что нужно выполнить при отсутствии файла.
4. Рассмотрим вопрос удаления старых ненужных файлов например, все они лежат в одной папке и нужно удалять все архивы, которые старше 14 дней. Можно сделать, так что в папке с архивами будут храниться только определенное количество архивов, соответственно последних.
Это делается с помощью двух команд. Первая это DIR, т.е. просто считываем все файлы в одной папке, и записываем их название в текстовый файл.
dir С(Y):\arhiv\*.rar /a:-D/b/o:-D > list_of_files.txt
dir С(Y):\arhiv\*.rar – это означает что мы считываем все rar-архивы в папке С(Y):\arhiv\.
/a:-D – данный параметр означает, что будут выводиться все файлы с указанными атрибутами, ключ -D означает, что нам нужны только файлы, не каталоги, префикс «-» как раз имеет значение отрицание, т.е. не каталоги, если бы мы написали просто D, то он считывал бы и каталоги.
/b – это вывод только имен файлов
/o:-D – это сортировка, ключ –D означает, что будет выполнена сортировка по дате, но сначала более старые, для исправления этого мы уже знаем, что нам поможет префикс «-»
> - означает, что будет выполнено перенаправление вывода в файл list_of_files.txt.
Мы считали все архивы и записали их в файл, далее нам нужно перебрать все эти файлы и оставить только 14 штук, т.е. за последние 2 недели. Это делаем с помощью команды FOR (цикл с параметром), который выполняет определенное действие для каждого файла в папке или каждой строки в файле, как в нашем случае.
for /F "skip=14" %%i in (list_of_files.txt) do (del /Q "%%i")
for – оператор цикла для перебора
/F "skip=14" – это ключ с параметром, который означает, что не нужно обрабатывать первые 14 файлов, т.е. мы их пропускаем.
%%i – переменная, в которой хранится название текущего файла
In (list_of_files.txt) – означает что перебирать все строки именно в этом файле
do (del /Q "%%i") - говорит что необходимо сделать с каждым, в нашем случае мы просто удаляем эти файлы с помощью del /Q ключ /Q для того чтобы у нас не спрашивали подтверждения перед удалением.
Т.о., у нас получился bat-файл:
Модифицируем данный пример. Предположим, мы хотим оставлять не 14 архивов, а то количество, которое сами захотим, для этого при запуске bat-файла будем вводить число архивов, которое нужно сохранить. Получится следующий скрипт:
Следует отметить, что в программах можно использовать следующие системные переменные:
%DATE% - показывает текущую дату.
%TIME% - показывает текущее время.
Для примера выполните следующий код:
Переменная %TIME% описана таким образом, для того чтобы результат вывелся в более читабельном виде, попробуйте написать %TIME% и % TIME:~0,-3% у вас, во втором случае уберутся 3 последних знака.
Проверка условий и выбор вариантов. Команды if и goto
Команда if позволяет выделять в командном файле группы команд, которые выполняются или не выполняются в зависимости от определенных условий. Для чего это нужно?
Проверка условия — почти необходимая мера при создании командных файлов, использующих параметры. Перед тем, как начинать работу, командный файл, вообще говоря, должен удостовериться в том, что ему передан корректный набор параметров. В противном случае велик риск, что он выполнится неверно или безрезультатно, а пользователю останется только гадать, в чем же проблема. Более того, если командный файл удаляет, перемещает или перезаписывает какие-либо данные, то при некорректных параметрах он может даже нанести ущерб.
На следующем листинге показан уже знакомый вам командный файл компиляции хелп-файла. В начало командного файла добавлена проверка первого параметра на непустоту. Обратите внимание на такую особенность синтаксиса: для операции сравнения используется сдвоенный знак равенства. Если первый параметр оказывается непустым, срабатывает команда goto, которая «перебрасывает» командный процессор к указанной метке. В данном случае имя этой метки compile. Обратите внимание, что там, где метка находится, ее имя предваряется двоеточием, а в команде goto нет. При пустом первом параметре командный процессор переходит к следующей строке, которая выдает сообщение об ошибке. А потом к следующей, которая перебрасывает его в самый конец файла к метке с именем finish.
Скажем прямо, предложенный способ проверки параметра не самый удачный.
Во-первых, если пользователь по ошибке укажет в качестве параметра имя несуществующего файла, командный файл этим удовлетворится и предпримет попытку компиляции. Более правильный способ — проверить, существует ли такой файл в действительности. Для этого в языке команд MS-DOS предусмотрено специальное слово exist. Поэтому лучше было бы написать: if exist %1.hpj goto compile.
Во-вторых, активное использование команды goto (т.н. безусловного перехода) и меток сильно запутывают код. Технически они ничем не плохи, но отлаживать и сопровождать командный файл, написанный в таком стиле, довольно неудобно. Поэтому программисты издавна считают безусловный переход приемом нежелательным. Ниже показан более правильный, с точки зрения стиля программирования, структурированный вариант, в котором используется конструкция if…else. Работает она так: если условие истинно, выполняются команды в скобках после if, а если ложно, то в скобках после else.
Обратите внимание на отступы от левого края. Они необязательны, но делают текст командного файла более читабельным.
Приведем еще один пример работы с проверками. Следующий командный файл создает каталог с именем help-files (предположим, для выгрузки в него скомпилированных хелп-файлов). При этом, если каталог с таким именем уже существует (и в нем, вероятно, находятся старые хелп-файлы, которые не хотелось бы терять: вдруг новые окажутся хуже?), командный файл присваивает ему расширение bak. Но если каталог help-files.bak уже существовал, то командный файл его удаляет (будем считать, что одной резервной копии нам хватит).
Дата публикования: 2014-11-18; Прочитано: 679 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!