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

Dos7book

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

Глава 3: Команды интерпретатора Command.com

клавишу"). Это сообщение не вполне верно, потому что клавишные комбинации CTRL-C, CTRL-BREAK и ALT-03 вызывают не продолжение, а прекращение исполнения batch-файла, причем действие этих клавишных комбинаций не зависит от команды BREAK. Если выводимое командой PAUSE сообщение нежелательно, то от него легко избавиться путем перенаправления:

PAUSE > NUL

После команды PAUSE в той же строке batch-файла может быть комментарий, как после команды REM. Если ECHO-флаг не установлен (3.11), то комментарий на экране не воспроизводится.

Когда принимаемые по умолчанию связи с консолью прерваны (например, командой CTTY NUL, 3.07), тогда для команды PAUSE необходимо явно указывать перенаправление ввода:

PAUSE < CON

Перенаправление команде PAUSE управляющего кода 03h (A.02-08), показываемого знаком , вызывает немедленное прерывание исполнения batch-файла:

ECHO | PAUSE > NUL

Управляющий код 03h вводится нажатием клавиш ALT-03, причем цифры 03 должны быть набраны числовыми клавишами в правой части клавиатуры.

В последнем примере важно обратить внимание на то, что команда PAUSE не получит перенаправляемый знак, если, например, перед ECHO поставить команду REM или если DOS не запишет данные промежуточного перенаправления во временный файл из-за отсутствия записываемого носителя. Чтобы компьютер не завис в бесконечном цикле ожидания, подобных ситуаций следует избегать.

3.22PROMPT – установление вида приглашения

Команда PROMPT (= подсказка) переопределяет значение одноименной переменной окружения, которым командный интерпретатор руководствуется при формировании приглашения командной строки. Обычно команда PROMPT записывается в одной из строк файла AUTOEXEC.BAT, но может быть введена из обычной командной строки. Вслед за именем команды PROMPT указывается текст приглашения. В этом тексте особым образом интерпретируются и замещаются группы из двух знаков, начинающиеся со знака доллара. Ниже перечислены соответствия между замещаемыми группами знаков и тем, чем именно они замещаются:

– 71 –

Глава 3: Команды интерпретатора Command.com

$Q знак равенства ( = ) $$ знак доллара ( $ ) $T текущее время

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

$P текущие диск и путь $V номер версии Windows $N текущий диск

$G знак "больше", т.е. правая стрелка ( > )

$L знак "меньше", т.е. левая стрелка ( < ) $B вертикальный штрих ( | )

$H код 08h "Backspace" (A.02-08).

$_ коды 0Dh 0Ah "Возврат каретки" и "Перевод строки" (A.02-08). $E код 1Bh "Выйти" ("Escape", A.02-08).

Команда PROMPT без последующего текста удаляет значение переменной PROMPT, и тогда по умолчанию формируется приглашение командной строки, состоящее из буквы текущего диска и правой стрелки, то есть такое же, какое устанавливается командой PROMPT $N$G. В MS-DOS7 переменной PROMPT автоматически присваивается иное значение ( PROMPT $P$G ), которое определяет привычный вид приглашения, включающий полный путь к текущему каталогу и заканчивающийся знаком правой стрелки.

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

Prompt @echo off$_Set Ret$q$p

C:\Command.com /c Ret.bat > Ret.bat

Call Ret.bat

Первая строка задает сложный вид приглашения, а вторая строка записывает это приглашение в другой batch-файл RET.BAT. Заметьте: если файл RET.BAT уже существует, то его прежнее содержание будет полностью утрачено. Записываемое новое содержание файла RET.BAT будет выглядеть так:

@echo off

Set Ret=D:\BACKUP

Обратите внимание, что указываемый после команды PROMPT фрагмент текста "$_Set Ret$q$p" в приглашении оказался преобразован в отдельную строку

"Set Ret=D:\BACKUP", где "D:\BACKUP" – это полный путь к тому каталогу,

который являлся текущим на момент исполнения строк batch-файла. Когда в третьей строке показанного выше примера команда CALL запускает файл RET.BAT на исполнение, полный путь оказывается записанным в значение

– 72 –

Глава 3: Команды интерпретатора Command.com

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

%Ret%\ CD %Ret%

Пример использования команды PROMPT для определения буквы текущего диска приведен в разделе 9.01-03. Время, дата, и версия операционной системы могут быть определены подобным же образом.

3.23RD – удаление каталога

Чтобы с помощью команды RD (Remove Directory = удалить каталог) можно было бы удалить каталог, должны быть удовлетворены следующие условия:

удаляемый каталог должен быть пуст;

диск с удаляемым каталогом должен быть доступен для записи;

удаляемый каталог не должен быть корневым;

удаляемый каталог не должен быть текущим на своем диске, даже если этот диск не является текущим в данный момент.

Вот пример использования команды RD:

RD D:\TEMP\NOTES

здесь:

NOTES – пример имени удаляемого пустого каталога.

D:\TEMP\ – пример пути к удаляемому каталогу. Путь может быть указан в любой из допустимых форм (2.02-01, 2.02-03) или вовсе не указан; в последнем случае будет предположено, что удалению подлежит подкаталог текущего каталога.

Примечание 1: RMDIR – еще одно имя той же команды RD.

3.24REM – вставка комментария

Командный интерпретатор воспринимает REM (REMark = замечание) как

команду игнорировать все остальные слова в той же строке до первого встреченного знака перенаправления (2.04-022.04-05) или до конца командной строки. Основная миссия команды REM – обеспечить возможность введения строк комментариев в batch-файлах. Максимальная длина строки комментариев – 123 знака. С помощью команды REM вводят такие комментарии, которые не нужно воспроизводить на экране при нормальном исполнении отлаженного batch-файла,

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

– 73 –

Глава 3: Команды интерпретатора Command.com

записанных там команд. Эти комментарии воспроизводятся на экране только в процессе отладки, пока не сброшен ECHO-флаг (3.11).

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

Еще одна миссия команды REM – это миссия "пустой" команды, которая формально исполняется, но тем не менее не делает ничего. Пример такого применения команды REM показан в файле VCEDIT.EXT в разделе 6.25-03. Поскольку команда REM не посылает ничего в канал STDOUT, постольку

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

REM > Anyfile.ext

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

потому восстановить утраченное содержание с помощью программы UNDELETE.EXE оказывается невозможно.

Примечание 1: опасно ставить команду REM в начале строки с промежуточным перенаправлением (2.04-05). Не будет исполнена только та команда, которая стоит слева от знака промежуточного перенаправления, создаваемый временный файл окажется пустым, и потом команда, стоящая справа от знака промежуточного перенаправления, начнет безуспешно ждать считывания из пустого файла. Кончается это, как правило, “зависаниемкомпьютера (пример в разделе 3.21).

Примечание 2: в "окне DOS" операционных систем Windows перенаправление выходного сообщения команды REM не исполняется, и там создать пустой файл таким способом нельзя.

3.25REN – переименование файлов

Команда REN (REName = переименовать) позволяет переименовать один файл или сразу несколько файлов, если их исходные имена соответствуют определенной маске. Вот пример использования команды REN для переименования одного файла:

REN C:\DOS\Notes.txt Notes.old

здесь:

C:\DOS\ – пример пути к файлу, который надлежит переименовать. Путь может быть указан в любой из допустимых форм (2.02-01,

– 74 –

Глава 3: Команды интерпретатора Command.com

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

Notes.txt – пример исходного имени переименовываемого файла. Notes.old – пример назначаемого имени. Оно не должно совпадать с

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

Пользование маской файла вместо одного исходного (старого) имени допускается, но часто ведет к ошибке: попытке создать несколько одноименных файлов в одном каталоге. Поэтому рекомендуется в назначаемом имени тоже "закрывать" знаками подстановки (см. 2.01-03) те позиции знаков, в которых целесообразно оставить без изменений знаки из старых (исходных) имен, чтобы в результате переименования разные файлы получили отличающиеся имена. Допустим, что в текущем каталоге имеется группа файлов PART_01.TXT – PART_12.TXT, которые надо переименовать в CHAP_01.TXT – CHAP_12.TXT.

Такая задача решается в одну строку командой

REN PART_??.TXT CHAP_??.TXT

Примечание 1: файлы с атрибутом H (скрытые) команда REN не переименовывает. Примечание 2: атрибуты переименовываемых файлов не изменяются.

3.26SET – присвоение значения переменной окружения

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

SET TEMP=D:\Temp

здесь:

TEMP

пример имени переменной окружения.

D:\Temp

пример значения, которое следует присвоить переменной TEMP.

 

В составе значения не должно быть знаков равенства и знаков

 

перенаправления (2.04-02 - 2.04-05).

Примечание 1: справа от разделяющего знака равенства все пробелы, как предшествующие назначаемому значению, так и следующие после него до конца строки, будут включены в присваиваемое значение переменной окружения.

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

– 75 –

Глава 3: Команды интерпретатора Command.com

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

Примечание 4: в batch-файлах назначаемое значение переменной может включать подстановки значений переменных (например, %Var2%) и формальных параметров (например, %2 %3, 2.03-03). Все такие подстановки будут сначала исполнены, и только потом полученный

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

Примечание 5: одноименная команда SET (4.25) в строках файла CONFIG.SYS интерпретируется загрузчиком IO.SYS, который не исполняет подстановки и перенаправления, но именно благодаря этому дает

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

3.27SHIFT – смещение нумерации параметров

Команда SHIFT (= сдвинуть) уменьшает на единицу порядковые номера всех параметров batch-файла (2.03-03), так что прежний параметр %0 становится недоступен, прежний параметр %1 становится %0, прежний параметр %2 становится %1, и т.д. Важно, что параметром %9 становится тот, который был недоступен прежде. Это дает возможность указывать более 9 параметров в командной строке и последовательно обращаться к ним, смещая их нумерацию от цикла к циклу с помощью команды SHIFT. Примером такого цикла может служить подпрограмма, представленная в строках 29 – 38 файла DISK.BAT из раздела 9.03-02. Когда последовательность указанных в командной строке параметров исчерпывается, очередной параметр оказывается имеющим пустое значение, и это служит признаком выхода из подобных циклов.

3.28TIME – установка времени

Для установки времени вслед за именем команды TIME (= время) в командной строке должно быть указано время, которое надлежит установить, например:

TIME 11:39:23,24

Числа за именем команды TIME последовательно обозначают часы, минуты, секунды и сотые доли секунды. В данном случае в качестве разделительных знаков в спецификации времени использованы двоеточия и запятая, но это зависит от установки национальных данных командой COUNTRY (4.05).

Когда время в командной строке не указано, на экран выводится текущее время вместе с приглашением ввести новое время. Если изменять время Вы не намерены, достаточно ответить на приглашение нажатием клавиши ENTER.

– 76 –

Глава 3: Команды интерпретатора Command.com

Чтобы дополнить текстовый файл строкой с указанием текущего времени, команду TIME можно использовать, например, следующим образом:

ECHO= | TIME | FIND.EXE "Current" >> ANYFILE.TXT

 

 

В представленной

строке

первое промежуточное перенаправление

( ECHO= | TIME )

обеспечивает

безостановочное

исполнение,

второе

промежуточное перенаправление ( TIME | FIND.EXE ) исключает нежелательные

строки выходного сообщения, а

третье перенаправление ( >> ANYFILE.TXT )

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

3.29TRUENAME – приведение пути в каноническую форму

Любая спецификация, следующая за именем команды TRUENAME (= истинное имя) в той же командной строке, интерпретируется как имя объекта файла или каталога, которому может предшествовать путь. Команда TRUENAME не проверяет их соответствие физической реальности, а преобразует спецификацию в каноническую форму, которая обязательно начинается с буквы диска и включает полный путь. Если путь в спецификации неполный или его вообще нет, то вместо

недостающих элементов приписываются путь к текущему каталогу и буква текущего диска. Если в спецификации пути обнаруживаются знаки "точка" и "точка-точка" (2.02-03), то они таким же образом заменяются конкретным путем. Помимо того, все буквы преобразуются в заглавные, знаки прямой косой черты заменяются знаками обратной косой черты, знаки подстановки "звездочка" (2.01- -03) заменяются соответствующим числом вопросительных знаков, длинные имена урезаются до 8 знаков, длинные суффиксы до трех знаков.

Если в исходной спецификации указан фиктивный путь, "сфабрикованный"

программами ASSIGN.COM, JOIN.EXE или SUBST.EXE, то команда TRUENAME

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

Примечание 1: команда TRUENAME не выдает сообщений об ошибках. Примечание 2: команда TRUENAME не может правильно распознавать сетевые

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

Примечание 3: действие команды TRUENAME основано на прерывании

INT 21\AH=60h (8.02-72).

3.30TYPE – считывание файла

Команда TYPE (= напечатай) посылает содержимое считываемого файла в канал STDOUT, который по умолчанию выводит посланное сообщение на экран

– 77 –

Глава 3: Команды интерпретатора Command.com

дисплея. Прокрутку строк воспроизводимого текста можно временно остановить клавишами CTRL-S или BREAK до нажатия любой другой клавиши, или вообще прервать считывание нажатием клавиш CTRL-C или CTRL-BREAK. Вот пример вызова команды TYPE:

TYPE C:\DOS\Notes.txt

здесь:

Notes.txt – пример имени считываемого файла. Замена имени маской файла в команде TYPE не допускается.

D:\DOS\ – пример пути к считываемому файлу. Путь может быть указан в любой разрешенной форме (2.02-01, 2.02-03). Если путь не указан, то поиск файла производится только в текущем каталоге.

Выводимое командой TYPE сообщение может быть перенаправлено на принтер, подключенный к параллельному порту LPT1:

TYPE A:\Config.sys > PRN

Совместно с командой TYPE часто используется программа просмотра MORE.COM (6.19), организующая постраничный вывод сообщений на экран.

3.31UNLOCK – разрешение конкурентного доступа к диску

После завершения исполнения каждой программы, получившей прямой доступ к конкретному диску с помощью команды LOCK (3.18), исходное состояние должно быть восстановлено командой UNLOCK (= отпереть), например, так:

UNLOCK C:

Фактически команда UNLOCK не разрешает конкурентный доступ к диску, а лишь уменьшает на единицу уровень запрета на конкурентный доступ, чтобы обеспечить правильное обслуживание вложенных вызовов программ. Но если исходный уровень запрета был равен единице, команда UNLOCK восстановит должное функционирование очереди запросов на доступ к конкретному диску. Это особенно важно в многозадачной операционной среде, например, в "окне DOS" операционной системы Windows-95/98. Если данный диск уже открыт для конкурентного доступа, то никаких действий команда UNLOCK не производит, и сообщений об ошибке не выдает.

3.32VER – версия операционной системы

Команда VER (VERsion = версия) в MS-DOS7 и в MS-DOS8 показывает номер версии операционной системы WINDOWS, в поставку которой входят эти версии DOS. Если команда VER исполняется с параметром /R

– 78 –

Глава 3: Команды интерпретатора Command.com

VER /R

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

3.33VERIFY – сверка копий файлов с оригиналами

Команда VERIFY (= сверить) без параметров показывает состояние служебной двоичной переменной, от которой зависит проведение сверки копии файла с оригиналом после каждого акта копирования файла. По умолчанию эта переменная находится в сброшенном состоянии ( OFF ), при котором сверка не проводится. Изменять состояние этой переменной можно командами VERIFY ON и VERIFY OFF (еще об этом в примечании 2 к 8.02-60).

Примечание 1: высокая надежность современных дисководов на жестких магнитных дисках делает сверку лишней тратой времени. Рекомендуется включать сверку параметром /V команды COPY только при копировании файлов на дискеты.

Примечание 2: двоичная переменная VERIFY не меняет своего состояния, когда

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

3.34VOL – метка и серийный номер диска

Метка диска это слово длиной до 11 знаков, которое может быть задано пользователем при форматировании. Если пользователь не захочет задавать метку, то в качестве метки будет записано NO NAME (безымянный). Метку можно изменить позже с помощью программы LABEL.EXE или встроенными средствами файл-менеджеров (Norton Commander, Volcov Commander, и т.п.).

Серийный номер это 8-значный шестнадцатеричный идентификатор, который автоматически присваивается диску при форматировании. Дискеты, форматируемые в процессе изготовления способом контактного копирования, серийного номера не имеют. При обычном копировании дискет и метка, и серийный номер дискеты-оригинала наследуются дискетой-копией.

Чтобы вывести на экран метку и серийный номер диска, нужно после команды VOL (VOLume = том) указать букву этого диска, например

VOL A:

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

– 79 –

Глава 4.

Команды файла CONFIG.SYS

 

 

4.01

ACCDATE

81

4.16

Installhigh

91

4.02

Break

 

81

4.17

LastDrive

91

4.03

Buffers

 

82

4.18

Lastdrivehigh

92

4.04

Buffershigh

82

4.19

MenuColor

92

4.05

Country

 

83

4.20

MenuDefault

93

4.06

Device

 

83

4.21

MenuItem

93

4.07

Devicehigh

84

4.22

Multitrack

94

4.08

DOS

 

86

4.23

NUMLOCK

94

4.09

DRIVPARM

86

4.24

REM

95

4.10

FCBS

 

88

4.25

Set

95

4.11

FCBSHIGH

88

4.26

Shell

96

4.12

Files

 

88

4.27

Stacks

97

4.13

Fileshigh

89

4.28

Stackshigh

97

4.14

Include

 

89

4.29

Submenu

98

4.15

Install

 

90

4.30

Switches

98

Конфигурация загрузки MS-DOS7 определяется параметрами и командами, записанными в три неформатированных текстовых файла, которые находятся в корневом каталоге загрузочного диска: MSDOS.SYS (5.01-01), CONFIG.SYS (9.01-01) и AUTOEXEC.BAT (9.01-02). Среди них файл CONFIG.SYS имеет наиболее долгую историю в предшествовавших версиях DOS. От него зависят важнейшие особенности конфигурации, в том числе состав загружаемых драйверов. Каждая строка в файле CONFIG.SYS – это команда загрузчику IO.SYS (5.01-01). Загрузчик интерпретирует команды совсем не так, как основной командный интерпретатор – COMMAND.COM (6.04). И большинство команд, и синтаксис в файле CONFIG.SYS другие. Хотя некоторые конфигурационные команды (4.02, 4.24, 4.25) называются так же, как команды интерпретатора COMMAND.COM, загрузчик IO.SYS обрабатывает их иначе. IO.SYS требует обязательного указания суффиксов файлов, не исполняет перенаправлений, не замещает имена переменных окружения их значениями. Порядок выполнения команд определяется не только порядком их расположения в файле CONFIG.SYS, но также их приоритетами (подробнее в 4.15 и 4.25). Существует группа команд (4.19, 4.20, 4.21, 4.29) которые можно указывать только в блоках меню и субменю, когда файл CONFIG.SYS имеет блочную структуру, причем другие команды (кроме 4.23) в этих блоках использовать нельзя.

– 80 –

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