Работа с командами MS-DOS (написание bat-файла) - файл n1.docx

Работа с командами MS-DOS (написание bat-файла)
Скачать все файлы (203.2 kb.)

Доступные файлы (1):
n1.docx204kb.04.02.2014 14:53скачать

n1.docx





Содержание



1.Постановка задачи 1

2.Используемые команды 2

Dir 3

For 3

If 5

3.Текст пакетного файла (lab1.bat) 6

4.Тестирование программы 7

5.Вывод 10

1.Постановка задачи



Написать пакетный файл, который будет выполнять следующие действия:

1. Создавать архив для указанной папки.

2. Разархивировать в указанную папку указанный архивный файл.

3. Протестировать все архивные файлы в указанной папке.

4. Переименовывать все файлы к указанной папке, у которых третий символ имени «а».

5. Создавать список файлов для указанной папки и сохранить данный список в файле с

именем “list.txt”.

6. Выводить на экран следующую структуру:

x

xx

xxx

xxxx

xxxxx

………

где количество строк (символов) задается с экрана.
Примечания:

Организовать выполнение указанных действий посредством удобного и понятного меню.

2.Используемые команды



В ходе выполнения данной лабораторной работы, при написании пакетного файла были использованы следующие команды и соответсвующие к ним ключи:

Dir


Вывод списка файлов и подкаталогов каталога. Вызванная без параметров команда dir выводит метку тома и серийный номер, за которыми следует список каталогов и файлов на диске, включая их имена, дату и время последнего изменения

dir [диск:][путь][имя_файла] [...] [/p] [/q] [/w] [/d] [/a[[:]атрибуты]][/o[[:]порядок_сортировки]] [/t[[:]поле_сортировки]] [/s] [/b] [/l] [/n] [/x] [/c] [/4]
[диск:][путь] - Задание диска и каталога, список файлов которого будет выведен.

[имя_файла] - Задание файла или группы файлов, сведения о которых требуется вывести.
Ключи:

/s - Перечисление всех случаев обнаружения определенного имени файла в указанном каталоге и всех его подкаталогах.

/b - Перечисление каждого имени файла (включая расширение) или каталога на отдельной строке.


Echo

Echo [{on|off}] [сообщение] - Вывод сообщений и переключение режима отображения

команд на экране.
Find

FIND [/V] [/С] L7N] [/I] [/OFFCLINE]] "строка" [[диск:][путь]имя_файла[ ...]]

Поиск заданной строки в файле или наборе файлов. Здесь:

• [диск1:][путь1]имя_файла — полный или краткий путь и имя файла, в котором

выполняется поиск;

• строка — строка с образцом текста, по которому осуществляется поиск;

• /I — не различать в процессе поиска заглавный и строчный регистр символов;

For


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

for {%переменная|%%переменная} in (множество) do команда [ПараметрыКоманднойСтроки]

{%переменная|%%переменная} - Обязательный параметр. Замещаемый параметр. %%переменная для выполнения команды for в пакетном файле. Переменные учитывают регистр и могут быть представлены со значением альфа, например, %A, %B или %C.

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

Команда - Обязательный параметр. Задает команду, которая будет выполнена для каждого файла, каталога диапазона значений или текстовой строки, включенной в указанный параметр (множество).

ПараметрыКоманднойСтроки - Задает параметры командной строки, которые используются с указанной командой.
tokens=x,y,m-n Задает элементы, передаваемые из каждой строки в тело цикла for при каждой итерации. В результате размещаются дополнительные имена переменных. Форма m-n задает диапазон, указывающий элементы с m-го по n-ый. Если последним символом строки tokens= является звездочка (*), то размещается дополнительная переменная, в которую помещается остаток строки после разбора последнего элемента.

Переменная с модификатором:

%~pI - Замена %I на путь.

%~nI - Замена %I одним именем файла.

%~nxI - Замена %I именем файла и расширением.

Ключи:

Рекурсивная Проходит по дереву каталогов с корнем в [диск:]путь, выполняя инструкцию for для каждого каталога в дереве. Если после ключа /R не задан каталог, предполагается текущий каталог. Если параметр множество задано одной точкой (.), то команда просто перечислит каталоги в дереве

Итерация диапазона значений , использование переменной итерации для установки начального значения (НачальноеЗначение#), а затем перемещение по диапазону значений, пока значение не превысит конечное значение множества (КонечноеЗначение#). /L выполнит итерацию, сравнив параметр НачальноеЗначение# с параметром КонечноеЗначение#. Если параметрНачальноеЗначение# меньше параметра КонечноеЗначение#, то выполняется команда. Когда переменная итерации превысит параметр КонечноеЗначение#, командная оболочка покидает цикл. Также можно использовать отрицательный параметр шаг# для перемещения в диапазоне убывающих значений. Например, (1,1,5) создает последовательность «1 2 3 4 5», а (5,-1,1) создает последовательность «5 4 3 2 1». Используется следующий синтаксис.


for /F ["КлючевыеСловаРазбора"] {%% | %}переменная in (МножествоИменФайлов) do команда [ПараметрыКоманднойСтроки]

for /F ["КлючевыеСловаРазбора"] {%% | %}переменная in ("СимвольнаяСтрока") do команда [ПараметрыКоманднойСтроки]

for /F ["КлючевыеСловаРазбора"] {%% | %}переменная in ('команда') do команда [ПараметрыКоманднойСтроки]

МножествоИменФайлов задает одно или несколько имен файлов. Каждый файл открывается, считывается и обрабатывается до перехода к следующему файлу в аргументе МножествоИменФайлов.
Goto

goto :метка

В пакетной программе передает управление Windows XP в строку, определенную меткой. Когда метка найдена, выполнение продолжается со следующей за ней строки.

метка - Строка в пакетной программе, к которой выполняется переход.

If


Обработка условий в пакетных программах.

if [not] errorlevel число команда [else выражение] if [not] строка1==строка2 команда [else выражение] if [not] exist имя_файла команда [else выражение]

Если расширения командного процессора разрешены, следует использовать следующий синтаксис: if [/i] строка1 оп_сравнения строка2 команда [else выражение] if cmdextversion число команда [else выражение] if defined переменная команда [else выражение]
not - Задает выполнение команды только в случае невыполнения условия.

errorlevel число - Условие выполняется, если предыдущая команда, обработанная интерпретатором команд Cmd.exe, завершилась с кодом, равным или большим числа.

Команда - Команда, которая должна быть обработана в случае выполнения условия.

exist имя_файла - Условие выполняется, если существует файл с именем имя_файла.

Операторы:

EQU - равно

NEQ - не равно
RAR
RAR <команда> -<ключ 1> -<ключ N> <архив> <файлы...> <@файл-

список...> <путь_для_извлечения\>
команды:

a - Добавить файлы в архив

l[t,b] - Показать содержимое архива [техинфо, только имена файлов]

x - Извлечь файлы с полными путями
Set

SET переменная = значение

переменная – любая строка не содержащая знака равенства и пробела, а значение –

любая строка символов.

Команда SET записывает строку «переменная = значение» в область окружения. Если

переменной до этого было присвоено какое-либо значение, то оно заменяется новым. Если

значение – пустая строка, то строка задающая значение переменной, удаляется из окружения

3.Текст пакетного файла (lab1.bat)



@echo off

rem ***Получаем имя (arh) и путь (pap) для сохранения архива***

:start

set pap=

SET /P pap="Vvedite put' k papke:"

if "%pap%" neq "" (goto :start1

) else (echo Nichego ne vvedeno! &&goto :start)

:start1

if exist "%pap%" (goto :start2

) else (echo Takoi papki ne suchestvuet! Vvedite nazvanie papki pravilno &&goto :start)
rem ***Получаем имя архива (arh)***

:start2

set arh=

SET /P arh="Vvedite nazvanie arhiva:"

if "%arh%" neq "" (RAR a %arh% %pap%

) else (echo Nichego ne vvedeno! &&goto :start2)
rem ***Сохраним список файлов нашего архива в list.txt***

RAR lb %arh% > %pap%\list.txt
rem ***Получаем путь (put) для извлечения файлов из архива***

:start3

set put=

SET /P put="Kuda izvlech faily iz arhiva:"

if "%put%" neq "" (goto :start4

) else (echo Nichego ne vvedeno! &&goto :start3)

:start4

if exist "%put%" (RAR x %arh% %put%

) else (echo Takoi papki ne suchestvuet! &&goto :start5)

:start5

set z=

SET /P z="Sozdat' takuy papku? Esli da nazhmite klavishu <1> i zatem Enter , esli net nazhmite Enter "

If "%z%" equ "1" (mkdir "%put%" &&(RAR x %arh% %put%)

) else goto :start3
rem ***Проверка архива***

dir /b/s %put% >list.tmp

for /F "tokens=*" %%i in ('RAR lb %arh% ^| find "."') do (

find /I "%%i" list.tmp>nul

if %errorlevel% equ 0 (echo %%i - YES) else (echo %%i - NO)

)

Del list.tmp
rem ***Переименование всех файлов с третьей буквой "а" в имени***

for /R %put% %%k in (??a*) do ren %%~pk\%%~nxk new_%%~nxk
rem ***Иерархическая структура***

set A=

set /P y="Vvedite kolichestvo strok="

for /L %%j in (1,1,%y%) do (

set A=!A!x

echo !A!

)

4.Тестирование программы



Тестирование производилось посредством командной строки и запуска пакетного файла lab1.bat.

В процессе тестирования были произведены следующие действия:


  1. Для правильной работы пакетного файла (для пункта 6 лабораторной работы) в командной строке необходимо включить ключ /V:ON

  2. Запустить на исполнение пакетный файл lab1.bat.

  3. Ввести путь к папке, которую необходимо заархивировать. (При этом допустим несколько ошибок при вводе: ничего не введём или введём несуществующий путь.)

  4. Ввести имя архива. (допустим ошибку ввода: ничего не введём)

  5. Ввести путь до папки, в которую необходимо извлечь файлы из архива. (допустим несколько ошибок: ничего не введём или введём несуществующий путь)

  6. Ввести количество строк. (5)


Ход тестирования и выполнение программы показан на рисунках 1,2,3,4,5



Рисунок 1 – тестирование программы

Рисунок 2 – тестирование программы

Рисунок 3 – тестирование программы



Рисунок 4 – тестирование программы


Рисунок 5 – тестирование программы


Тестирование программы произведено по данному алгоритму и показало, что программа выполняет все поставленные задачи лабораторной работы, а также корректно обрабатывает допущенные пользователем ошибки при вводе.

5.Вывод



В ходе данной лабораторной работы получены навыки работы с командами MS-DOS посредством написания пакетного файла (bat-файла). Изучены процесс архивирования с помощью командной строки, а также такие команды как for, set, if, goto.



Лист



Учебный текст
© perviydoc.ru
При копировании укажите ссылку.
обратиться к администрации