Flatik.ru

Перейти на главную страницу

Поиск по ключевым словам:

страница 1
Демченко А. MI-22

Операционные системы (SO)


Лабораторная работа №2

работа с пакетными файлами (.bat) в операционной системе DOS.
Цель работы: Получить навыки работы в операционной системе DOS. Изучить структуру и специфические команды пакетных файлов (.bat): rem (Коментарий), echo (Вывод сообщения), call (Вызов другого пакетного файла), goto (Переход по метке), if (Условие), for (Цикл), shift (Сдвиг аргументов на один влево), set (Установить переменную окружения), cls (Очищение экрана) и др.
Ход работы: Задача 1. Для начала рассмотрим работу с одним пакетным файлом и несколькими командами DOS. Файл ncopy.bat будет копировать все файлы из текущей директории в указанную в 1м аргументе, причем, сам файл ncopy.bat скопирован быть не должен.
Листинг файла ncopy.bat.
rem Убираем эхо-вывод команд

@echo off

rem Очищаем экран

cls
rem Выводим текущее время

echo Time:

time /T

echo ---------------------
rem Проверка, если первый аргумент (папка назначения) не указан, перейти на метку no_dir

if "%1"=="" goto no_dir
rem В цикле for для всех файлов текущей папки проверяем если имя не равно ncopy.bat, и если это так, копируем файл в назначенную папку

for %%f in (*.*) do if not "%%f" == "ncopy.bat" copy %%f %1
rem Т.к. файлы были успешно скопированы, нет смысла выводить сообщение об ошибке, поэтому переходим к концу пакетного файла командой goto, тем самым, завершая работу

goto end
:no_dir

rem Вывод сообщения об ошибке

echo Ошибка. Не указана папка.
rem Работа окончена

:end
Задача 2. Написание командного скрипта для вывода ряда фибоначи (т.е. где каждый последующий член ряда равен сумме двух предыдущих: 1, 1, 2, 3, 5, 8, 13, ...). Для этого будет использовано несколько пакетных файлов, работа с переменными окружения и тд.
Программа вывода состоит из 4-х пакетных файлов:

fibonaci.bat - главный исполняемый файл

sum.bat - сложение двух чисел

inc.bat - увеличение числа на 1

сonvert.bat - преобразование аргументов в арабскую систему счисления.
Базовые команды операционной системы DOS не позволяют работать с числами (складывать, умножать и тд), но есть средства для работы со строками (сложение, присвоение), через них будет имитироваться работа с числами. Для удобства была введена система из p-аргументов т.е. чтобы представить число 125, необходимо передать какому-либо пакетному файлу 3 аргумента: "pppppp" "ppp" "pp", где каждый аргумент это разряд, а кол-во символов p это цифра: p = 0, pp = 1, ppp = 2, pppp = 3, и тд.
Пакетный файл convert.bat преобразует систему из p-аргументов в арабскую систему счисления.

Листинг файла convert.bat.
rem Убираем эхо-вывод команд

@echo off
rem Очищаем переменную окружения result, в нее будет записан результат

set result=
rem Цикл shift

:loop1
rem Преобразуем символы из p-системы в арабскую
if "%1" == "p" set result=0%result%

if "%1" == "pp" set result=1%result%

if "%1" == "ppp" set result=2%result%

if "%1" == "pppp" set result=3%result%

if "%1" == "ppppp" set result=4%result%

if "%1" == "pppppp" set result=5%result%

if "%1" == "ppppppp" set result=6%result%

if "%1" == "pppppppp" set result=7%result%

if "%1" == "ppppppppp" set result=8%result%

if "%1" == "pppppppppp" set result=9%result%
rem Сдвигаем аргументы на один влево

shift

rem Если новый аргумент не является пустым, продолжаем работу

if not "%1" == "" goto loop1
Пакетный файл inc.bat увеличивает число в p-системе на единицу, возвращает результат в переменной окружения result.

Листинг файла inc.bat.
@echo off
set firstparam=%1

set allparams=
if not "%firstparam%p"=="ppppppppppp" goto no_carry_result
set allparams=p

set addcarry=1
:loop

shift

if "%1"=="" goto carry_result
if %addcarry%==0 goto skip

if not "%1p"=="ppppppppppp" goto no_carry_set

set addcarry=1

set allparams=%allparams% p

goto loop
:no_carry_set

set addcarry=0

if "%allparams%"=="" goto empty_allparams

set allparams=%allparams% p%1

goto loop

:empty_allparams

set allparams=p%1

goto loop
:skip

set allparams=%allparams% %1

goto loop
:no_carry_result

set result=%firstparam%p
:loop2

shift

if "%1"=="" goto end

set result=%result% %1

goto loop2
:carry_result

set result=%allparams%

if %addcarry%==1 set result=%result% pp
:end
Пакетный файл sum.bat складывает два числа из переменных окружения (v1, v2) и возвращает результат в переменной v2.

Листинг файла sum.bat.

@echo off
rem i - переменная-счетчик цикла

set i=p
:loop

rem Если i = v1, необходимо завершить цикл

if "%i%"=="%v1%" goto loop_end

if "%i%"=="%v1% " goto loop_end
rem Увеличить переменную v2 на 1

call inc.bat %v2%

set v2=%result%
rem Увеличить переменную i на 1

call inc.bat %i%

set i=%result%
goto loop

:loop_end
Пакетный файл fibonaci.bat выводит ряд фибоначи.

Листинг файла fibonaci.bat.
rem Убираем эхо-вывод команд

@echo off

rem Очистить экран

cls
rem Установка первых двух членов прогрессии

set v1=pp

set v2=pp
rem Вывод первых двух членов, т.к. они заведомо известны

echo 1

pause

echo 1

pause
rem Главный цикл

:fib_loop
rem Считаем сумму

set tempv2=%v2%

call sum.bat

set v1=%tempv2%
rem Выводим результат в арабской системе

call convert.bat %result%

echo %result%
rem Ждем нажатия любой клавиши для продолжения работы

pause

goto fib_loop
Вывод: В ходе работы были получены навыки работы в операционной системе DOS. Изучена структура пакетных файлов DOS, их взаимодействие и специфические для них команды. Важно то, что использование .bat файлов экономит много времени при однообразных действиях с файлами.

Лабораторная работа №2 работа с пакетными файлами (. bat) в операционной системе dos

Echo (Вывод сообщения), call (Вызов другого пакетного файла), goto (Переход по метке), if (Условие), for (Цикл), shift (Сдвиг аргументов на один влево), set

83.74kb.

08 10 2014
1 стр.


Лабораторная работа №9. Работа с файлами и каталогами

Цель работы: Познакомиться с основными приёмами работы с каталогами и файлами в системе Delphi

72.66kb.

12 10 2014
1 стр.


Лабораторная работа №1 Работа в Oracle Database Express Edition 1 Лабораторная работа №6

Лабораторная работа Выполнение расчетов с использованием программирования в среде Visual Basic for Applications

232.43kb.

18 12 2014
1 стр.


Лабораторная работа. Синхронизация нитей внутри процесса в ос windows

Цель работы: изучить возможности применения механизмов синхронизации нитей одного процесса в операционной системе Windows

152.69kb.

09 10 2014
1 стр.


Лабораторная работа №1 Изучение автоматической телеграфной станции ат-пс-пд лабораторная работа №2 и зучение телеграфного коммутационного сервера «Вектор-2000»

Рецензент – зам начальника Гомельской дистанции сигнализации и связи Белорусской железной дороги В. И. Прокопюк

822.36kb.

29 09 2014
3 стр.


Лабораторная работа №1 по курсу "Информационная безопасность" Лабораторная работа №1

Простейшей и в то же время наиболее надежной из всех схем шифрования является так называемая схема однократного использования (рис. 1), изобретение, которое чаще всего связывают с

118.45kb.

10 10 2014
1 стр.


Лабораторная работа №1 «Изучение аэрофотосъёмочной аппаратуры». Аэрофотографическая система и ее основные характеристики. Принципиальная схема аэросъёмочного аппарата. Основные части афа. Назначение афа

Лабораторная работа №2 «Составление технического проекта на производство аэрофотосъемочных работ»

26.07kb.

14 12 2014
1 стр.


Лабораторная работа №3 по сппо «Дочерние окна в Windows» Общее задание

Для командного файла ms dos, разработанного в лабораторной работе №1, создать Windows-программу с дочерними окнами редактирования командной строки и ее выполнения с отображением пр

19.75kb.

14 12 2014
1 стр.