Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Dos7book

.pdf
Скачиваний:
75
Добавлен:
09.02.2015
Размер:
5.1 Mб
Скачать

Глава 1 Знакомство с клавиатурой в DOS

кодовую страницу с каким-либо национальным набором знаков. Реализация этой

возможности требует исполнения ряда операций по изменению настроек клавиатуры и знакогенератора, формирующего изображение для воспроизведения на экране. Фирма Microsoft предлагает следующую последовательность операций:

изменить ограничения на выбор знаков для использования в именах, а

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

COUNTRY.SYS (5.02-01, пример в разделе 9.01-01);

подготовить место в памяти для одной или нескольких дополнительных кодовых страниц посредством загрузки драйвера DISPLAY.SYS (5.02-02, пример в разделе 9.01-01);

запустить программу MODE.COM, чтобы загрузить желаемые кодовые страницы и сделать одну из них активной (6.18, пример в

разделе 9.01-02);

запустить программу KEYB.COM, чтобы загрузить избранную альтернативную раскладку клавиатуры (5.02-04, пример в

разделе 9.01-02);

загрузить резидентный модуль программы NLSFUNC.EXE (5.02-03),

чтобы обеспечить оперативное переключение между подготовленными кодовыми страницами.

Впоставке операционной системы WINDOWS-95 национальные кодовые страницы упакованы в четыре файла данных: EGA.CPI, EGA2.CPI, EGA3.CPI и ISO.CPI. Каждая национальная кодовая страница содержит 256 знаков, в том числе два отдельных набора знаков: американский (знаки 32 – 127) и какой-либо другой (с номерами знаков от 128-го и выше). Поэтому переключение между знаками национального языка и американскими не требует смены кодовых страниц, оно выполняется в пределах одной кодовой страницы. Этого бывает вполне достаточно для того ограниченного круга задач, которые решают сейчас с помощью MS-DOS7.

По той же причине в оперативном переключении кодовых страниц обычно необходимости нет.

Переключение между различными наборами знаков в пределах одной кодовой страницы выполняется с помощью "горячих" клавишей, активизируемых резидентным модулем драйвера KEYB.COM (5.02-04) или какого-либо другого

(например, KEYRUS.COM, 5.02-05). В частности, KEYB.COM активизирует клавишную комбинацию CTRL-правыйSHIFT для переключения на национальный набор знаков и комбинацию CTRL-левыйSHIFT для переключения к американскому набору знаков. KEYRUS.COM позволяет в тех же целях активизировать различные клавишные комбинации, в том числе и упомянутые.

Фирма Microsoft поставляет таблицы раскладки клавиатуры упакованными в три файла: KEYBOARD.SYS, KEYBRD2.SYS, KEYBRD3.SYS. Среди этих файлов только KEYBOARD.SYS содержит раскладки, соответствующие клавиатурам пишущих машинок. Подробности выбора раскладки клавиатуры и кодовой

– 21 –

Глава 1 Знакомство с клавиатурой в DOS

страницы для конкретной страны приведены в приложении A.02-2. Пример использования того варианта национальной адаптации, который предложила фирма Microsoft, показан в разделах 9.01-01 и 9.01-02.

Хотя раскладки клавиатуры и кодовые страницы, разработанные фирмой Microsoft, подходят для большей части стран мира, они не поддерживаются более и не сделаны открытыми для внесения изменений. В связи с этим к настоящему времени для DOS разработаны не менее пяти других драйверов клавиатуры. В этой книге внимание уделено только одной из альтернатив драйверу KEYRUS.COM (5.02-05), который представляет собой открытую систему, поставляемую совместно

со средствами для создания новых раскладок клавиатуры и для внесения изменений в кодовые страницы. К сожалению, предложенный фирмой Microsoft формат раскладок клавиатуры и кодовых страниц не подходит для KEYRUS.COM. Примеры национальной адаптации с помощью драйвера KEYRUS.COM показаны в разделах 9.04-01 и 9.09-01.

– 22 –

Глава 2 Командная строка

Командная строка в MS-DOS начинается с автоматически формируемого приглашения и затем должна быть заполнена знаками и словами, которые все

вместе должны удовлетворять условиям машинной интерпретации в соответствии с определенными правилами. Завершающее нажатие клавиши ENTER запускает процедуру интерпретации посредством специальной программы командного интерпретатора, причем синтаксические правила для разных интерпретаторов не одинаковы.

В MS-DOS7 имеются 3 интерпретатора: IO.SYS, COMMAND.COM, и DEBUG.EXE. Каждый из них использует свой набор команд, описываемый в главе

4 для IO.SYS, в главе 3 для COMMAND.COM и в разделе 6.05 для DEBUG.EXE.

Поскольку загрузчик IO.SYS интерпретирует только строки конфигурационных файлов, перед пользователем первой открывается командная строка, представляемая основным резидентным интерпретатором COMMAND.COM. Этот интерпретатор называют резидентным, потому что он постоянно находится в памяти компьютера и всегда готов исполнить команды, которые пользователь введет с клавиатуры.

Посредством перенаправления ввода (подробнее в разделе 2.04-02) можно заставить интерпретатор воспринимать команды не с клавиатуры, а из командных файлов, в которых каждая строка представляет собой отдельную командную строку. Пересылка командных файлов через перенаправление ввода

единственный способ автоматизировать исполнение сложных последовательностей операций интерпретатором DEBUG.EXE (примеры в разделе 9.02).

Интерпретатор COMMAND.COM также принимает командные файлы через перенаправление ввода, но для него этот путь не единственный и не лучший,

потому что он способен принимать к исполнению особый вид командных файлов (batch-файлы) без перенаправления. Из batch-файлов интерпретатор COMMAND.COM исполняет несколько дополнительных операций, которые из обычных командных файлов и прямо с клавиатуры не исполняются. К числу таких

операций относятся подмены имен переменных и формальных параметров их значениями (подробнее в разделе 2.03-03), поиск меток, а также команды вызова, перехода и некоторые другие (3.02, 3.14, 3.21, 3.27). Здесь и далее в этой книге термин "batch-файлы" обозначает только такой особый вид командных файлов. Примеры batch-файлов показаны в разделе 9.03. Конфигурационный файл

AUTOEXEC.BAT (9.01-02, 9.04-02, 9.09-02) – это тоже типичный batch-файл.

Далее во второй главе неформально описаны основные соглашения, определяющие композицию командных строк, как вводимых с клавиатуры, так и

– 23 –

Глава 2: Командная строка

строк командных файлов. В некоторой степени эти соглашения являются общими для всех трех интерпретаторов в MS-DOS7. У каждого из них, конечно, есть свои особенности, и они отмечены тоже. Но если не оговорено иное, то подразумеваются примеры командных строк для основного интерпретатора – COMMAND.COM.

2.01Назначение имен

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

Существуют объекты встроенные команды, порты и некоторые другие, адресация которых не может быть уточнена указанием пути. Таким объектам для

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

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

Первое условие правильности композиции командной строки это правильная адресация желаемых объектов по их именам. Поэтому с самого начала надо разобраться, какие слова могут быть использованы в качестве имен объектов в командных строках, а какие нет.

2.01-01 Зарезервированные слова

Зарезервированными словами являются имена встроенных команд интерпретатора, а также устройств, заявленных как имеющиеся в конкретном компьютере. Пользователь не вправе сам назначать и изменять имена таких объектов, но должен их знать хотя бы для того, чтобы не предпринимать попыток назначения этих имен другим объектам, которые он вправе именовать.

Встроенные команды это те, которые командный интерпретатор выполняет сам. Все имена встроенных команд, приведенные в главе 3, будут считаться

– 24 –

Глава 2: Командная строка

зарезервированными словами, если исполнять данную командную строку будет интерпретатор COMMAND.COM. Например, файл нельзя назвать именем PROMPT, потому что интерпретатор COMMAND.COM, встретив такое имя, "поймет" его как вызов его собственной команды (3.22) и, конечно, попытается ее выполнить. Любые интерпретаторы аналогичным образом не позволяют присваивать имена своих встроенных команд другим объектам.

Зарезервированные имена устройств в компьютере относятся к источникам получения данных или адресатам для посылки данных. Наиболее известны следующие имена устройств:

AUX

1-й последовательный порт

COM1

1-й последовательный порт (эквивалент имени AUX)

COM2

2-й последовательный порт

CON

консоль, т.е. клавиатура для ввода и дисплей для вывода

LPT1

1-й параллельный порт, обычно для подключения принтера

NUL

виртуальный порт вывода "в никуда"

PRN

1-й параллельный порт (эквивалент имени LPT1)

Помимо перечисленных, зарезервированными именами устройств считаются

CLOCK$, COM3, COM4, CONFIG$, LPT2, LPT3. Эти слова резервируются драйверами, входящими в состав ядра DOS, которые загружаются всегда, даже

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

запустить с параметром /D. Будет выведена таблица, в 4-м столбце которой показаны имена, причем зарезервированные имена логических устройств показаны со смещением на 3 знакоместа вправо относительно других имен.

Некоторые устанавливаемые программные драйверы также могут быть адресованы по имени и резервируют слова с этой целью. Например, драйвер

SETVER.EXE (5.01-02) резервирует имя SETVERXX, драйвер HIMEM.SYS (5.04-01) резервирует имя XMSXXXX0, драйвер EMM386.EXE (5.04-02)

резервирует имя EMMXXXX0. Более того, когда Вы указываете произвольный идентификатор для оптического дисковода, например, MSCD001 (5.09-01, 5.09-02, 5.09-03), это имя регистрируется DOS и приобретает статус зарезервированного слова. Если потом Вы попытаетесь присвоить это имя файлу, DOS отвергнет Вашу попытку.

– 25 –

Глава 2: Командная строка

2.01-02 Имена и суффиксы

Операции назначения имен и переименования наиболее часто применяются по отношению к каталогам (3.19, 6.20) и к файлам (3.24, 3.25), как к обычным, так и к исполняемым (утилитам). Имена в DOS должны содержать не более 8 знаков и могут быть дополнены суффиксом (расширением), содержащим не более 3 знаков и отделяемым от имени знаком точки. Когда имя имеет суффикс, но он для конкретной операции не требуется, и потому в командной строке не указан, то разделяющий знак точку не следует указывать тоже.

В составе имен и суффиксов можно использовать буквы, цифры и некоторые знаки, не имеющие специальной синтаксической миссии: знак числа ( # ), знак доллара ( $ ), амперсанд ( & ), дефис ( – ), восклицательный знак ( ! ), знак подчеркивания ( _ ) и несколько других (в частности, 2.04-06). Заглавные и строчные буквы рассматриваются в MS-DOS7 как эквивалентные почти во всех операциях, за исключением наименований сопоставляемых элементов в строках вызова команд IF (3.15-02), SEARCH (6.05-16) и программы FIND.EXE (6.14).

Поскольку точка служит для разделения имени и суффикса, постольку ее нельзя использовать в них как обыкновенный знак. В именах и суффиксах нельзя также использовать запятую ( , ), двоеточие ( : ), точку с запятой ( ; ), знак равенства ( = ), вопросительный знак ( ? ), плюс ( + ), левую стрелку ( < ), правую стрелку ( > ), звездочку ( * ), вертикальную черту ( | ), косую черту ( / ), обратную косую черту ( \ ) и двойные кавычки ( " ). Знаки национальных алфавитов нельзя использовать, если ограничения на них не сняты командой COUNTRY (4.05, 5.02-01 и A.02-5).

Имена каталогов обычно суффиксов не имеют. Суффиксы в именах файлов служат для указания типа файла или его происхождения. Три суффикса - BAT, COM и EXE – имеют особый статус, поскольку интерпретатор COMMAND.COM считает файлы с такими суффиксами исполняемыми по умолчанию. Когда имя файла с одним из этих суффиксов оказывается первым в командной строке, то интерпретатор COMMAND.COM автоматически ставит его на исполнение. Если же в таком файле окажется не исполняемый код, а что-либо иное, то компьютер почти наверняка зависнет. Поэтому суффиксы BAT, COM и EXE не следует присваивать файлам, которые не являются специально предназначенными и заведомо пригодными для исполнения.

Присвоение других суффиксов не настолько критично, но тем не менее обычно выполняется в соответствии с рядом общепринятых правил. Файл-менеджеры способны связывать файлы с определенными суффиксами с теми программами, к которым эти файлы относятся. Например, файл с суффиксом BAS может быть автоматически послан на исполнение интерпретатору языка BASIC. Такая "привязка" файлов к соответствующим программам оказывается очень удобной (примеры в 6.25-03, 6.25-04). Знакомство с общепринятой практикой назначения

– 26 –

Глава 2: Командная строка

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

BAK

архив или старая версия файла

BAT

batch-файл для интерпретатора COMMAND.COM

BIN

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

BMP

файл растрового изображения (Bit-Map Picture)

CAB

сжатый файл для поставок программного обеспечения

COM

исполняемый файл без заголовка

CPI

файл с несколькими таблицами шрифтов для DOS

DAT

файл с различными не-текстовыми данными

DOC

форматированный текстовый файл редактора WORD

DLL

динамически связываемая библиотека исполняемых кодов

EXE

исполняемый файл с управляющими параметрами в заголовке

EXT

файл спецификаций функционального расширения

GIF

файл графического изображения (Graphic Image File)

HTM

файл, написанный на языке HyperText Markup language

INI

файл с установочными параметрами для инициализации

JPG

файл изображения, сжатый согласно спецификации JPEG

RAR

сжатый архивный файл, созданный программой RAR.EXE

RTF

текстовый файл формата Rich Text Format

SCR

командный файл (обычно для интерпретатора DEBUG.EXE)

SYS

системный файл, текстовый или исполняемый

TMP

временный файл

TXT

неформатированный текстовый файл

ZIP

сжатый архивный файл, созданный программой PKZIP.EXE

Ассоциации для множества других суффиксов можно найти в сети интернет на сайте http://www.openwith.org/ .

2.01-03 Маски и знаки подстановки

Вопросительный знак ( ? ) и звездочка ( * ) являются знаками подстановки, которые нельзя использовать в именах и суффиксах, но тем не менее можно включать в состав спецификаций имен и суффиксов в командных строках. Такие спецификации, в которых один или несколько знаков заменены знаками подстановки, называются маской файла и являются средством адресации нескольких файлов сразу.

– 27 –

Глава 2: Командная строка

При разборе командной строки, содержащей маску файла, интерпретатор COMMAND.COM может вызывать функцию раскрытия маски, которая осуществляет поиск файлов, имена которых соответствуют данной маске. Если такой файл удается найти, то его имя подставляется в командную строку вместо маски, и в таком виде командная строка подается на исполнение. Если таких файлов оказывается несколько, то аналогичная процедура подстановки и

исполнения последовательно производится по отношению к каждому из найденных файлов.

Будут ли слова со знаками подстановки "раскрываться" – это зависит от исполняемой команды: некоторые команды вызывают упомянутую функцию раскрытия маски, а некоторые нет. В большинстве случаев "раскрытие" производится, но имеются следующие исключения:

маски файлов не раскрываются встроенными командами ECHO, SET, TYPE и IF с условием равенства (описанными в главе 3);

знаки подстановки среди параметров batch-файлов не раскрываются (при этом не важно, вызывается ли batch-файл командой CALL или исполняется непосредственно);

в спецификации перенаправления ввода (2.04-02) знаки подстановки не раскрываются;

команда FOR (3.13) раскрывает маски файлов только внутри скобок, а вне

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

Вопросительный знак ( ? ) представляет собой знак подстановки, который

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

DEL readme.??

маска будет соответствовать всем файлам с именем "readme" и суффиксом, содержащим не более двух знаков: readme.ru, readme.en, readme.f, и т.д. В результате исполнения такой команды DEL (3.09) все такие файлы из текущего каталога будут удалены.

Звездочка ( * ) представляет собой знак подстановки, который побуждает

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

DEL C:\TEMP\*.*

– 28 –

Глава 2: Командная строка

будет соответствовать любому имени файла с любым суффиксом, так что команда DEL с такой маской удалит все файлы из указанного каталога.

Многочисленные примеры использования масок файлов приведены в разделах 2.02-03 и 9.09-02, а также в других batch-файлах в главе 9.

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

Примечание 2: интерпретаторы IO.SYS и DEBUG.EXE не раскрывают знаки подстановки. При интерпретации конфигурационного файла CONFIG.SYS загрузчиком IO.SYS вопросительный знак принимается не как знак подстановки, а как метка выдачи подсказки (4.06, 4.07, 4.15, 4.16, 4.25).

2.02Спецификации путей

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

DOS предоставляет возможность (2.04-01, 3.03) выбрать любой конкретный путь в качестве пути, принимаемого по умолчанию. Этот путь будет записан во внутреннюю таблицу DOS (A.03-3). Каждый раз, когда Вы вводите командную строку, не содержащую спецификации пути, DOS будет руководствоваться тем самым записанным в таблицу путем. Тот диск и тот самый конечный каталог (или подкаталог), которые указаны в принимаемом по умолчанию пути, принято называть текущим диском и текущим каталогом соответственно. Приглашение DOS (3.22) обычно настраивают так, чтобы оно показывало текущий путь.

2.02-01 Типовая структура спецификации пути

По умолчанию командный интерпретатор ищет адресуемый объект в принимаемом по умолчанию (текущем) каталоге на принимаемом по умолчанию

– 29 –

Глава 2: Командная строка

(текущем) диске. Если объект следует искать где-то в другом месте, то перед именем объекта надо указать путь, например

C:\DOS\MS7\Edit.com

здесь:

Edit.com – адресуемый исполняемый файл;

C:\DOS\MS7\ – пример спецификации пути к этому файлу.

Показанная структура спецификации пути направляет процесс поиска: сначала надо перейти в корневой каталог диска C:, там найти каталог DOS и войти в него, затем в каталоге DOS найти подкаталог MS7, и уже в последнем искать подлежащий исполнению файл. Если на Вашем диске структура каталогов иная, то надо будет указать другие имена, но принцип останется тем же: сначала буква диска, за которой следует двоеточие, потом цепочка имен каталогов, отделяемых знаком обратной косой черты, и последним указывается имя адресуемого объекта.

Спецификации, заканчивающиеся знаком обратной косой черты, воспринимаются в MS-DOS как не имеющие адресуемого объекта и потому неполные. Такие спецификации либо игнорируются (2.04-01), либо считаются ошибкой, за исключением важного частного случая пути, сокращенного до одного знака обратной косой черты. Одиночная обратная косая черта после буквы диска и двоеточия означает путь к корневому каталогу этого диска. Например,

A:\

обозначает путь к корневому каталогу диска A:.

Пути без указания буквы диска (например: \DOS\MS7\Edit.com)

отсчитываются относительно корневого каталога текущего диска независимо от того, какой диск является текущим в данный момент. Такие спецификации пути позволяют писать командные файлы, которые одинаково исполняются на любом диске (примеры в разделах 9.01-01, 9.04-01, 9.09-01). Одиночная обратная косая черта воспринимается как путь к корневому каталогу текущего диска. Команда смены каталога (3.03) с указанием одной обратной косой черты вместо пути

CD \

выполняет переход в корневой каталог текущего диска.

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

DOS\VC4\Edit.com

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

– 30 –

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]