Основные соглашения MS DOS и WINDOWS об именах файлов и устройств

Цель работы

Целью работы является приобретение практических навыков работы в среде MS DOS или WINDOWS в командном режиме.

Общие сведения о командах

Диалог пользователя с MS DOS осуществляется в форме команд. Операционная система готова к диалогу, если на экране имеется приглашение A: или C:>. Команда состоит из имени команды и параметров, разделенных пробелами. Команда может набираться как прописными так и строчными латинскими буквами, а завершается нажатием клавиши <ENTER>.Синтаксис структуры команды MS DOS удобно представить в форме Бэкуса-Наура:

<команда>::= <имя команды> <пробел> <параметр 1> <пробел> <параметр 2> <пробел> <параметр i>

<параметр i>::=<устройство> | <имя каталога> | <путь> | <спецификация файла> | <переключатель>

В качестве параметров команд выступают имена устройств, каталогов, имена файлов, путей доступа к файлам и переключатели ,уточняющие действие команды. Команды MS DOS бывают двух типов: внутренние и внешние. Внутренние команды выполняются командным процессором MS DOS (файл COMMAND. COM). Внешние команды реализуются программами, поставляемыми вместе с операционной системой в виде отдельных файлов.

Основные соглашения MS DOS и WINDOWS об именах файлов и устройств

2.1 Имя устройства

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

В качестве ВЗУ используются устройства хранения информации на магнитных, лазерных и магнитооптических дисках, которые обозначаются буквами латинского алфавита. Имена A: и B: зарезервированы за гибкими магнитными дисками. Обратите внимание: после имени диска обязательно ставится двоеточие!

Для смены текущего диска достаточно набрать его имя в командной строке. Например: A: - переключение на работу с гибким диском.

Клавиатура и монитор являются устройствами системного ввода и вывода, для обозначения которых в информатике применяется специальный термин «консоль», поэтому для обращения к этим устройствам используется групповое имя CON. При вводе информации консолью является клавиатура, а при выводе – монитор.

Обмен данными с внешним миром компьютер реализует через специальные устройства, получившие название портов. Для ОС порты и устройства, подключаемые через соответствующий порт к компьютеру, имеют одинаковое имя. В системе известны следующие имена портов:

COM1 - COM3 – устройства (порты) с последовательным интерфейсом;

LPT1 - LPT3 – устройства (порты) с параллельным интерфейсом.

Для принтера в системе зарезервировано имя PRN, а поскольку принтер обычно подключается через параллельный порт, то к нему можно обратиться и по имени порта, например, LPT1

В ОС имеется также зарезервированное имя для фиктивного устройста NUL, которое удобно использовать в командах переназначения вывода.

2.2 Имя файла

Синтаксис имени файла:

<имя файла>::=<имя>.<расширение>

Имя файла MS DOS содержит от 1 до 8 символов, а расширение - от 0 до 3 символов. Допустимы прописные и строчные буквы латиницы и кириллицы, цифры, знаки пунктуации и специальные символы: $, #, &, @, !, %, (, ), {, }, ~, ^, -, _. В системе WINDOWS 95/98/2000 имя файла может содержать до 255 символов.

Имена файлов не должны совпадать с именами устройств, зарезервированными в системе.

2.3 Имя каталога

Каталог - специальное место на диске, в котором хранятся имена файлов и основные сведения о них. В каждом каталоге - множество файлов, но каждый файл регистрируется только в одном каталоге. Каждый каталог имеет свое имя и может быть зарегистрирован в другом каталоге. Если каталог А зарегистрирован в каталоге В, то А является подкаталогом В, а В - надкаталог или родительский каталог для А.

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

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

. – имя текущего каталога;

.. – имя родительского каталога;

… - имя прародительского каталога (поддерживается только в WINDOWS).

2.4 Имя пути

Путь - это последовательность из имен каталогов, разделенных символом "\". Путь задает маршрут от текущего или корневого каталога к тому каталогу, где находится нужный файл.

Если путь начинается с символа "\", то он называется абсолютным и вычисляется от корневого каталога диска, иначе – путь является относительным и отсчитывается от текущего каталога. Например: CD \DOS\EXE - смена текущего каталога с абсолютным указанием пути; CD ..\LETTER - смена текущего каталога с относительным указанием пути.

2.5 Полное имя файла.

Полное имя файла (или спецификация файла) имеет вид:

<имя дисковода><путь>\<имя файла>

По умолчанию используются текущий дисковод и текущий каталог.

Во многих командах в именах файлов могут использоваться метасимволы: «*» и «?» для выполнения групповых операций. Символ "*" обозначает любое число любых символов, "?" – один произвольный символ. Например: С:\DOS\EXE\PRINT.BAT - полная спецификация файла; C:\DOS\EXE\*.BAT - групповая спецификация файлов с любым допустимым именем и расширением BAT.

Cинтаксис основных команд

Рассмотрим основные команды MS DOS, сгруппировав их по типам выполнямых операций. Подробную информацию по любой команде можно получить, используя ключ “/?”. При описании команды используются следующие обозначения:

d: - имя дисковода;

path – путь доступа;

filename – имя файла.

3.1 Команды для работы с файлами

3.1.1 Команда: ATTRIB.

Назначение: установить атрибуты файла.

Формат:

ATTRIB [+A|-A][+H|-H][+R|-R][+S|-S][[d:][path]filename][/S]

Параметры:

+A|-A - добавить/удалить атрибут архивации;

+H|-H - добавить/удалить атрибут скрытого файла;

+R|-R - добавить/удалить атрибут защиты от записи;

+S|-S - добавить/удалить атрибуты системного файла;

/S - работа в заданной директории и поддиректориях.

Комментарий: атрибут архивации используется командами BACKUP, XCOPY. Использование атрибута скрытого файла позволяет исключить файл из списка, выдаваемого командой DIR.

Пример:

ATTRIB +R *.* - назначить атрибут «только для чтения» всем файлам из текущего каталога.

3.1.2 Команда: FC

Назначение: сравнение файлов

Формат:

FC [/A][/C][/N] [d:][path] filename1[d:][path] filename2

Параметры:

filename1, filename2 - имена сравниваемых файлов;

/A - выдать отличия, как ASCII-cимволы;

/C - считать прописные и строчные буквы идентичными;

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

Пример:

FC /A A.TXT B.TXT - сравнение двух текстовых файлов из текущего каталога.

3.1.3. Команда: COPY

Назначение: копирование/слияние файлов.

Формат:

-для копирования файлов

COPY sourse [/A|/B][destination][/A|/B][/V]

-для слияния двух и более файлов

COPY [d:][path]filename1[/A|/B]+[d:][path]filename2[/A|/B] [+...][destination][/A|/B][/V]

Параметры:

sourse - имя файла , который необходимо копировать; destination - имя файла копии;

/A - файл рассматривается как ASCII-файл;

/B - файл рассматривается как бинарный;

/V - проверка копирования;

filename1,filename2 - имена объединяемых файлов.

Комментарий:

1) если использован ключ /A, то копируется файл до первого символа (CTRL-Z), если стоит ключ - /B, то копируется весь файл;

2) в качестве аргументов команды могут использоваться имена устройств;

3) команда не обрабатывает файлы, хранящиеся в подкаталогах.

Пример:

COPY A.TXT+*.TXT /V - добавление в текстовый файл A.TXT содержимого всех текстовых файлов из текущего каталога;

COPY CON FILE.DAT – копирование с клавиатуры в файл FILE.DAT.

3.1.4 Команда: DEL

Назначение: удаление файлов.

Формат:

DEL [d:][path]filename [/P]

Параметры:

/P - удаление с подтверждением операции.

Комментарий: файлы с атрибутом защиты от записи этой командой не удаляются; удаленные файлы могут быть восстановлены командой UNDELETE.

Пример:

DEL *.BAK - удаление всех файлов с типа BAK из текущего каталога.

3.1.5 Команда: REN

Назначение: переименование файлов.

Формат:

REN [d:][path]filename1 filename2

Параметры:

filename1 - старое имя файла;

filename2 - новое имя файла.

Комментарий: возможно групповое переименование с помощью метасимволов «*» и «?». Команда не позволяет переименовывать поддиректории.

Пример:

REN *.TXT *.DOC - смена расширения файлов в текущем каталоге.

3.1.6 Команда: TYPE

Назначение : вывод содержимого текстового файла на экран.

Формат:

TYPE [d:][path]filename

Комментарий: в имени файла нельзя использовать глобальные символы.

Пример:

TYPE A.DOC - вывод файла документации на экран.

3.1.7 Команда: PRINT

Назначение : фоновая печать файлов.

Формат:

PRINT [/Q:qsize] [/T] [d:][path] filename [/C] [/P]

Параметры:

/Q:qsize - максимальное число файлов в очереди, по умолчанию -10, диапазон [4,32];

/T - удалить все файлы из очереди на печать;

/C - удалить предыдущий файл и все последующие из очереди на печать, перед ключом нужно указать имя файла;

Комментарий: в аргументах команды можно по указать до 10 спецификаций файлов

Пример:

PRINT A.TXT/C - удалить указанный файл из очереди на печать.

3.1.8 Команда: XCOPY

Назначение: копирование файлов и каталогов.

Формат:

XCOPY sourse [destination][/E][/S][/V][/M]

Параметры:

sourse - имя файла, который надо копировать;

destination - имя файла, в который надо копировать;

/A - копировать те файлы, где установлен атрибут архивации;

/E - копировать и пустые подкаталоги;

/M - копировать файлы с атрибутом архивации, затем этот атрибут убрать;

/S - копировать каталог с подкаталогами;

/V - выполнить проверку операции;

Пример:

XCOPY A:\PROG /M - копирование файлов с включенным атрибутом «архивный».

3.1.9 Команда: MOVE

Назначение: пересылка файлов и переименование каталогов.

Формат:

MOVE [/Y] [d:][path]file_old [d:][path]file_new

Параметры:

file_old - старое имя файла;

file_new - новое имя файла;

/Y – отказ от запроса на подтверждение на замену файлов.

Комментарий: возможна групповая пересылка с использованием метасимволов «*» и «?».

Пример:

MOVE *.TXT D:\MYDIR - пересылка всех файлов типа TXT из текущего каталога в каталог D:\MYDIR.

3.1.10 Команда: UNDELETE

Назначение : восстановление удаленных файлов.

Формат:

UNDELETE [d:][path]filename

Комментарий: команда имеет несколько способов восстановления удаленных файлов, но в данной работе изучается только один из этих способов.

Пример:

UNDELETE MY.TXT - восстановление файла MY.TXT из текущего каталога.

3.2 Команды управления ОС

3.2.1 Команда: PATH

Назначение: установить пути поиска исполняемых файлов.

Формат:

PATH [[d:][path[;[d:]path][;...]]

Параметры:

path - маршруты, где ОС ищет исполняемые файлы.

Комментарий: указанные в команде маршруты запоминаются в пере­менной окружения с именем PATH.

Пример:

PATH C:\DOS;C:\EXE - при запуске программ, помимо текущего каталога просматривать указанные в команде каталоги.

3.2.2 Команда: PROMPT

Назначение: установить вид системного приглашения.

Формат:

PROMPT [promptstring]

Параметры:

promptstring - строка, которая определяет вид нового сис­темного приглашения:

$Q - символ «=»;

$$ - символ «$»;

$E - символ ESCAPE;

$D - текущая дата;

$G - символ >;

$T - текущее время суток;

$P - текущий каталог на принимаемом по умолчанию устройстве;

$N - имя принимаемого по умолчанию устройства;

$L - символ <;

$V - номер версии DOS;

Комментарий: чаще всего используется системное приглашение в виде указания текущего каталога на текущем устройстве, завершающееся символом «>:». Команда может использоваться для передачи команд драйверу ANSI.SYS.

Пример:

PROMPT $T$G - задание системного приглашения в виде указания текущего времени.

3.2.3 Команда: SET

Назначение: установить значение переменной окружения.

Формат:

SET [variable=[string]]

Параметры:

variable - имя переменной окружения,

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

Комментарий: если команда подана без параметров, то она вы­водит текущие значения переменных окружения.

Пример:

SET LIB=D:\TC\LIB - установка значения переменной окружения LIB.

3.2.4 Команда: DATE

Назначение: установить значение системной даты.

Формат:

DATE [date]

Параметры:

date – значение даты.

Комментарий: если команда подана без параметров, то она вы­водит текущую дату.

Пример:

DATE 25/12/2000

3.2.5 Команда: TIME

Назначение : установить значение системного времени.

Формат:

TIME [time]

Параметры:

time – значение времени.

Комментарий: если команда подана без параметров, то она вы­водит текущее время.

Пример:

TIME 14:45

3.2.6 Команда: VER

Назначение: вывод версии операционной системы.

Формат:

VER

3.2.7 Команда: SUBST

Назначение : подмена логического диска каталогом..

Формат:

SUBST d: [path] [/D]

Параметры:

d - имя логического диска;

path – имя каталога;

/D – отмена назначения.

Комментарий:

1) замена действует до повторной выдачи команды SUBST с ключом /D;

2) если команда подана без параметров, то она вы­водит список всех назначений.

Пример:

SUBST A: D:\TC - подмена диска A: каталогом D:\TC.

3.3 Команды работы с дисками/каталогами

3.3.1 Команда: CHDIR (CD)

Назначение : установить текущий каталог.

Формат:

CD [d:][path]

Комментарий: команда без параметров выводит имя текущего каталога

Пример:

СD .. - сделать текущим родительский каталог.

3.3.2 Команда: CHKDSK

Назначение: проверить диск на наличие системных ошибок.

Формат:

CHKDSK [[d:][path]filename][/F][/V]

Параметры:

filename - имена файлов, проверяемых на фрагментацию;

/F - исправлять ошибки, обнаруженные на диске;

/V - печатать имена файлов по мере проверки диска.

Комментарий: команда проверяет структуру каталогов и файлов. В системе WINDOWS отсутствует, а вместо нее используется SCANDISK.

Пример:

CHKDSK A: /F - выполнить проверку гибкого диска.

3.3.3 Команда: DISKCOPY

Назначение : копирование гибкого диска.

Формат:

DISKCOPY [d1:[d2:]][/1][/V]

Параметры:

d1 - диск - источник;

d2 - диск - приемник;

/1 - копировать только первую сторону диска;

/V - выполнить проверку операции.

Комментарий: команда выполняет физическое копирование всего носителя, работает только с однотипными гибкими дисками.

Пример:

DISKCOPY A: A: - физическое копирование дискет при наличии в компьютере одного накопителя для гибких дисков.

3.3.4 Команда: FORMAT

Назначение :форматирование диска

Формат:

FORMAT d: [/T:tracks /N:sectors] [/F:size] [/Q] [/S] [/U]

Параметры:

/T:tracks - число дорожек на диске;

/N:sectors - число секторов на дорожке;

/F:size - емкость диска;

/Q - быстрое форматирование;

/S - копировать системные файлы после форматирования,

/U - безусловное форматирование;

Комментарий: любой диск , отформатированный без параметра /U, может быть восстановлен командой UNFORMAT.

Пример:

FORMAT A: /F:1440 /S - форматирование системного гибкого диска на 1,44 Мб.

3.3.5 Команда: MKDIR (MD)

Назначение: создать каталог

Формат:

MD [d:]path

Параметры:

path - имя создаваемого каталога.

Пример:

MD A:\PROG - cоздать подкаталог первого уровня на гибком диске.

3.3.6 Команда: RMDIR (RD)

Назначение: удалить директорию.

Формат:

RD [d:]path

Параметры:

path - имя каталога, который нужно удалить.

Комментарий: удаляемый каталог не должен содержать файлов.

Пример:

RD MYCAT - удалить каталог на текущем диске.

3.3.7 Команда: DIR

Назначение: вывод содержимого каталога на экран.

Формат:

DIR [d:] [path] [filename] [/O:order] [/B] [/P] [/S] [/W]

Параметры:

filename - имя файла или файлов;

/O:order - сортировка каталога: (D - сортировка по дате, E - сортировка по расширению; N - сортировка по имени; S - сортировка по размеру)

/B - вывести имена файлов и подкаталогов;

/P - поэкранный вывод;

/S - просмотр подкаталогов;

/W - вывод в широком формате.

Комментарий: ключ /S дает возможность искать файлы в пре­делах всего диска. Пример

DIR \*.BAK /S /B - вывод указанных файлов в пределах всего диска.

3.3.8 Команда: VOL

Назначение: вывод метки и серийного номера диска.

Формат:

VOL [d:]

Комментарий: команда без параметра выводит метку текущего диска.

Пример

VOL C: - вывод метки диска C:

3.3.9 Команда: LABEL

Назначение: создание, изменение и удаление метки диска.

Формат:

LABEL [d:] [метка]

Комментарий: если при вызове команды не указана метка, то на экран выводится текущая метка диска и выводится запрос на изменение или удаление метки.

Пример

LABEL A: Петров - запись на диск гибкий диск метки «Петров».

3.3.10 Команда: UNFORMAT

Назначение : восстановление ошибочно отформатированного диска.

Формат:

UNFORMAT d:

Пример

UNFORMAT A: - восстановление диска A: после форматирования.

3.4 Переназначение ввода/вывода

Операционная система имеет средства переназначения потоков ввода и вывода данных для любых программ, работающих под ее управлением. Например, если какая-либо программа по умолчанию выводит результаты на экран монитора, то можно этот вывод направить в определенный файл на диске. Для этого имеются специальные команды:

“>>” - переназначить вывод с добавлением новых данных к уже существующим;

“>” - переназначить вывод с замещением данных;

«<» - переназначить ввод данных.

Пример:

DIR > CATALOG.DAT - вывод текущего каталога в файл catalog.dat;

DIR > PRN - вывод текущего каталога на печать;

DIR >> CATALOG.DAT - добавление текущего каталога в существу­ющий файл catalog.dat;

SORT < CATALOG1 > CATALOG2 - сортировка по алфа­виту файла catalog1 и вывод отсортированных данных в файл catalog2.

3.5 Фильтры и конвейеры

Фильтр - это программа, которая читает заданный поток ввода данных, обра­батывает его, а затем осуществляет вывод. К фильтрам относят команды: FIND, MORE, SORT. С помощью фильтров можно организовать конвейер команд, в котором результаты выполнения одной программы сразу же передаются в качестве входных данных для другой программы. Количество программ, связываемых в один конвейер, может быть произвольным. В конвейере можно использовать команды переназначения ввода или вывода.

3.5.1 Команда: FIND

Назначение : поиск заданной строки символов во входном потоке данных.

Формат:

FIND [/I] [/V] string [d:] [path] [filename]

Параметры:

string – строка символов для поиска;

/I – поиск без учета регистра символов;

/V – выводить строки, не содержащие заданную строку string.

Комментарий:

1) выводит на экран все строки из входного потока, содержащие заданную символьную строку;

2) если не указана спецификация файла, в котором требуется проводить поиск, то программа FIND обрабатывает данные, введенные с клавиатуры.

Пример:

FIND “привет” C:\MYLETTER.TXT – поиск слова “привет” в заданном файле.

3.5.2 Команда: SORT

Назначение: сортировка входного потока данных из файла или с клавиатуры.

Формат:

SORT [/R] [/+n] [d:] [path] [filename]

Параметры:

/R – сортировка в обратном порядке;

/+n – сортировка строк, начиная с позиции n.

Комментарий:

1) выводит на экран упорядоченные строки из входного потока;

2) если не указана спецификация файла, то программа SORT обрабатывает данные, введенные с клавиатуры.

Пример:

SORT /+10 C:\MYLETTER.TXT – вывести на экран упорядоченные строки из заданного файла; сортировку проводить по 10 позиции каждой строки.

Если файл содержит, например, расписание движения самолетов, и с 10 позиции в каждой строке этого файла хранится название пункта назначения, то сортировка будет проводится по этому названию.

3.5.3 Команда: MORE

Назначение : последовательный вывод на экран входных данных фрагментами по 24 строки (одна экранная страница)

Формат:

MORE [d:] [path] [filename]

Комментарий: если не указана спецификация файла, то программа MORE обрабатывает данные, введенные с клавиатуры.

Пример:

MORE C:\ANKETA.DAT – вывод на экран содержимого заданного файла по 24 строки.

3.5.4 Команда: | (вертикальная черта)

Назначение : организация конвейера команд.

Примеры:

DIR | SORT - вывод отсортированного каталога на экран, сортировка проводится по имени файлов;

DIR | SORT > CATALOG.DAT - вывод отсортированного ка­талога в файл CATALOG.DAT;

DIR | SORT | MORE - постраничная выдача отсортированного каталога на экран;

DIR | FIND "DIR" > CON - вывод имен подкаталогов из текущего каталога на экран (если Вы работаете в русифицированной версии ОС, то с помощью команды FIND надо искать строку «КАТАЛОГ» вместо «DIR»).

4. Порядок выполнения работы

4.1 Выйти в среду операционной системы. Если Вы работаете в WINDOWS, то загрузите сеанс MS DOS или перезагрузите систему в режиме эмуляции MS DOS.

4.2 Запросить версию ОС, с которой Вы работаете.

4.3 Очистить экран монитора (CLS).

4.4 Отформатировать гибкий диск;

4.5 Задать метку гибкого диска.

4.6 Используя команды работы с каталогами, сделать следующее:

· создать подкаталог COP на диске А;

· скопировать в него подкаталог жесткого диска, указанный преподавателем;

· вывести каталог COP экран, изучить структуры записей каталога о файлах и подкаталогах и занести их в отчет;

· используя команду переназначения, записать каталог COP в файл DIR.DAT корневого каталога диска А;

· отсортировать содержимое файла DIR.DAT по алфавиту (SORT), по типу файлов (SORT /+9) и по размеру файлов (SORT /+13);

· вывести содержимое файла DIR.DAT на экран;

· удалить файл DIR.DAT;

· восстановить файл командой UNDELETE;

· с помощью конвейера вывести имена подкаталогов корневого каталога диска С: на экран ( DIR | FIND "DIR");

· удалить подкаталог COP диска А.

4.7 Освоить запуск программ из разных каталогов:

· из текущего каталога;

· из любого каталога с указанием пути;

· с использованием команды PATH.

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

· создать подкаталог TEXT на диске А и скопировать в него конкатенацию двух текстовых файлов (в качестве исходных файлов можно, например, взять CONFIG.SYS и AUTOEXEC.BAT);

· полученному в результате слияния файлу дать имя A.TXT;

· сравнить построчно файл-копию с файлом CONFIG.SYS и результат сравнения занести в файл A.PRT, пояснить результат сравнения;

· скопировать исполняемые файлы внешних команд MS DOS, начинающиеся на "DISK", из C:\DOS или C:\WINDOWS\COMMAND на гибкий диск;

· выполнить проверку гибкого диска (CHKDSK или SCANDISK);

· при наличии второй дискеты выполнить физическое копирование первой дискеты на вторую (DISKCOPY) и сравнить содержимое дисков после копирования (DISKCOMP)

· удалить файл A.TXT с дискеты.

4.9 Вывести на экран значения переменных области окружения, занести их в отчет. Записать новую переменную TOWN, присвоить ей значение «N_Chelny».

4.10 Отформатировать дискету способом безопасного форматирования, восстановить данные командой UNFORMAT;

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

6. Контрольные вопросы

6.1 Спецификация файла, использование мета­символов "*", "?".

6.2 Понятие внешних и внутренних команд.

6.3 Синтаксис команд, основные соглашения об именах устройств.

6.4 Имя каталога, имя пути. Синтаксис и назначение.

6.5 В чем отличие в операциях копирования COPY и XCOPY. Пояснить на примере.

6.6 В чем отличие в копировании файлов командой COPY и BACKUP.

6.7 Что произойдет, если копирование дискеты с помощью DISKCOPY выполнить на неотформатированный гибкий диск.

6.8 Синтаксис и назначение команд работы с каталогами и файлами. Поясните по протоколу.

6.9 Синтаксис и назначение команд обслуживания дисков. По­ясните по протоколу.

6.10 Син­таксис и назначение команд переназначения ввода/вывода и фильтрации. Поясните по протоколу работы.

Наши рекомендации