Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Задание. 1. Создать командный файл fff1.BAT, который принимает от пользователя число, умножает его на 5 и выводит результат в консольное окно



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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...