Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций MS dos + Norton Commander.doc
Скачиваний:
16
Добавлен:
04.11.2018
Размер:
21.07 Mб
Скачать

Проверка условий в командном файле

Команда IF позволяет в зависимости от выполнения некоторых •Условий выполнять или не выполнять команды в командном файле.

Формат команды:

IF условие команда

Параметры:

команда – это любая допустимая команда (в том числе GOTO). Эта команда выполняется, если условие в команде IF истинно, в пробивном случае команда игнорируется;

условие – это одно из приведенных ниже выражений:

ERRORLEVEL число – условие истинно тогда, когда код завершения предыдущей выполненной программы больше заданного числа или равен ему (код завершения устанавливается программами при окончании их работы, по умолчанию – этот код равен нулю);

строка1= =строка2 – условие истинно тогда, когда строка1 и строка2 полностью совпадают. Если в этих строках имеются символы %0–%9, то вместо этих символов подставляются параметры командного файла;

EXIST имя-файла – условие истинно тогда, когда указанный файл существует;

NOT условие – истинно тогда, когда указанное условие ложно.

Пример Создадим файл TYP.BAT, который выводит некоторый файл на экран. Формат вызова будет:

TYP имя-файла

Мы будем проверять, задан ли при вызове параметр и существует ли указанный файл. Командный файл TYP.BAT может быть таким (справа в скобках приводятся номера строк файла):

echo off (1)

if -%1 == + goto no_param (2)

if not exist %1 goto not exist (3)

type %1 ~ (4)

goto exit (5)

:no_param: (6)

echo Должен быть задан параметр (7)

goto exit (8)

:not_exist (9)

echo Файл %1 не найден (10)

:exit (11)

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

Должен быть задан параметр

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

В строке 3 проверяется, что указанный в команде файл существует. Если он не существует, то выдается сообщение

Файл .... не найден

(.... – параметр, заданный в команде TYP), и выполнение командного файла прекращается.

Следует заметить, что при сравнении строк, содержащих символы параметров %0 — %9, следует проявлять осторожность. Например, сравнение второго параметра командного файла со строкой SSS не следует делать так:

if %2 = = SSS . . .

Дело в том, что если в командном файле меньше двух параметров, то символы %2 будут замещены пустой строкой, и при выполнении команды возникнет ошибка. Еще опаснее сравнение

If SSS = = %2 . . .

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

if -% 2 = = -SSS . . .

Оно годится в любом случае.

Написание файла config.Sys

В корневом каталоге диска, с которого загружается операционная система, может находиться файл CONFIG.SYS, задающий параметры операционной системы DOS, а также указывающий, какие програм­мы, расширяющие возможности операционной системы, необходимо загружать в оперативную память (эти программы называются драйверами устройств, хотя они не обязаны управлять работой каких-либо устройств).

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

Замечание. При изменении файла CONFIG.SYS соответствующие параметры конфигурации системы изменятся только после перезагрузки DOS.

Файл CONFIG.SYS должен представлять собой текстовый (ASCII) файл. Каждая строка этого файла имеет вид:

имя-команды = значение

Команды файла CONFIG. SYS. Ниже перечисляются наиболее часто используемые команды файла CONFIG.SYS:

Break = on - установить режим проверки нажатия клавиш [Ctrl] [Break] при операциях ввода-вывода с диском. Это позволяет пре­рывать выполнение программ, которые иначе бы выполнялись до своего завершения. Изменить режим проверки нажатия [Ctrl] [Break] можно и впоследствии командами DOS: break on и break off;

Buffers = число-буферов – установка числа буферов для опера­ций ввода-вывода с диском;

Country = 007,866,полное-имя-файла-COUNTRY.SYS – установ­ка удобного формата выдачи информации о дате и времени;

Lastdrive = буква – установка последней буквы, которая может использоваться в качестве имени дисковода в команде SUBST (пример: lastdrive=z);

Files = 20 – установка максимального числа одновременно от­крытых файлов. Многие программы для своего выполнения требуют, чтобы значение параметра FILES было не менее 20. При работе с некоторыми базами данных необходимо большее значение параметра .FILES: 50 или даже 80;

rem комментарий – задание комментариев в файле CONFIG.SYS;

Shell = COMMAND.COM /Е:число-байтов /Р – увеличение разме­ра области памяти, в которой хранятся переменные окружения. Чис­ло байтов задает размер этой области. Если размер области памяти для хранения переменных окружения недостаточен, то DOS выдает сообщение: «Out of environment space»;

Device = имя-файла-драйвера [параметры] – установка драйвера устройства. Программы-драйверы расширяют возможности DOS. Вот некоторые наиболее полезные драйверы устройств:

ANSI.SYS – расширяет возможности по выводу на экран и позволяет

переопределять значения клавиш на клавиатуре;

DRIVER.SYS – позволяет подсоединять к компьютеру дополнительные

диски;

MOUSE.SYS – обеспечивает использование мыши в прикладных про-

граммах;

SMARTDRV.SYS – позволяет создать кэш диска в расширенной или в до­полнительной памяти;

VDISK.SYS – позволяет создать «электронный диск» в расширенной

или в дополнительной памяти.

Например, если файлы драйверов находятся в каталоге C:\EXE\SYS, то ко­манда device = C:\EXE\SYS\ANSI.SYS установит драйвер ANSI.SYS, расширяю­щий возможности по выводу на экран и позволяющий переопределять значения клавиш на клавиатуре; device = C:\EXE\SYS\VDISK.SYS размер-диска [/Е] – ус­тановит «электронный» диск. Размер диска задается в килобайтах. Параметр /Е указывает, что «электронный» диск должен размещаться в расширенной памяти процессора Intel-80286 или 80386 (сверх 640 Кбайт).

Install = полное-имя-программы [параметры] — установка рези­дентной программы. Этот способ экономит оперативную память, так как при его использовании для запускаемой программы не резерви­руется место для хранения переменных окружения. В связи с этим не все программы могут быть установлены с помощью команды Install.

На компьютерах на основе процессоров Intel-80386, 486 или Pentium имеются и еще более эффективные способы загрузки программ — с помощью команды LoadHigh файла AUTOEXEC.BAT.

Возможности DOS 5.0 и 6. 0. При использовании компьютеров на основе Intel-80286 или более старших моделей, оснащенных не менее чем 1 Мбайтом оперативной памяти, Вы можете с помощью MS DOS 5.0 или 6.0 перенести большую часть программ DOS из обычной памяти в первые 64 Кбайта расширенной памяти, освободив тем са­мым 30-40 Кбайт обычной памяти для прикладных программ. Для этого надо включить в файл CONFIG.SYS следующие строки:

DEVICE=C:\EXE\MSDOS\HIMEM.SYS

DOS=HIGH

(мы предполагаем, что драйвер HIMEM.SYS находится в каталоге C:\EXE\MSDOS). В системе DR DOS вместо HIMEM надо использо­вать драйвер HIDOS.

Замечание. Возможность перемещения DOS в первые 64 Кбайта расширен­ной памяти, как это ни странно, возникла из-за ошибки при создании процессора Intel-80286. Как известно, в микропроцессоре Intel-8088 адреса ячеек памяти за­даются с помощью двух двухбайтных чисел – сегмента и смещения по формуле: сегмент х 16+смещение. При этом, если полученный адрес оказывался большим 1 Мбайта, то «лишний» мегабайт игнорировался — происходило обращение к на­чалу (первым 64 Кбайтам) оперативной памяти. А при реализации обычного (не защищенного) режима работы Intel-80286 последняя особенность в нем не была учтена, в результате чего оказалось возможным в обычном режиме процессора (в котором работает DOS) обращаться к первым 64 Кбайтам (точнее, к 65520 байтам) за пределами первого мегабайта адресов памяти. Сначала эта ошибка рассматрива­лась как курьез, а потом было осознано, что из нее можно извлечь немалую пользу.

На компьютерах с процессором Intel--80386 или более старшим Вы можете перенести из обычной памяти не только DOS, но и драй­веры устройств и резидентные программы. Для того чтобы получить такую возможность, надо включить в файл CONFIG.SYS следующие строки:

DEVICE=C:\EXE\MSDOS\HIMEM.SYS

DEVICE=C:\EXE\MSDOS\EMM386.EXE NOEMS

DOS=HIGH,UMB

Здесь мы опять предполагаем, что драйверы HIMEM.SYS и EMM386.EXE находятся в каталоге C:\EXE\MSDOS. После этого Вы можете использовать для размещения программ и драйверов в «верхней» памяти: для драйверов – команду DEVICEHIGH файла CONFIG.SYS; для программ – команду LOADHIGH или LH коман­дного процессора DOS.

При выполнении этих команд DOS делает попытку загрузить драйвер или программу в «верхнюю» память (в диапазон адресов от 640 Кбайт до 1 Мбайта), а если это не удается, загружает их в обыч­ную память.

Примеры:

DEVICEHIGH=C:\EXE\MOUSE.SYS 2

(в файле CONFIG.SYS)

LOADHIGH C:\EXE\SMADTDRV.EXE 2048 1024

(в файле AUTOEXEC.BAT)

Замечания: 1. Перенос программ из обычной памяти оказался возможен по­тому, что 80386 и последующие процессоры имеют функции управления памятью, отсутствовавшие в более ранних процессорах. Для этого с помощью специального драйвера (типа EMM386.EXE) процессор изменяет адреса блоков расширенной па­мяти, логически «перемещая» их в первый мегабайт, доступный в обычном ре­жиме процессора, и размещает там указанные программы или драйверы.

  1. Команду DEVICEHIGH, естественно, можно использовать в файле CONFIG.SYS только после строки DOS=HIGH,UMB.

  2. Если Вы хотите «превратить» часть расширенной (extended) памяти в Вашем компьютере в дополнительную (expanded), замените параметр NOEMS в команде запуска драйвера EMM386.EXE на количество «превращаемой» памяти в килобайтах. В этом случае Вы можете также использовать параметр FRAME=adpec для задания в шестнадцатеричном виде адреса сегмента «окна» дополнительной памяти (например, FRAME=EOOO).

  3. В некоторых компьютерах процессор не должен использовать отдельные адреса оперативной памяти в диапазоне от 640 Кбайт до 1 Мбайта для размещения программ или отображения в дополнительную память, поскольку это вызывает конфликты с контроллерами устройств или с программами. В таких случаях надо использовать параметр Х=диапазон-адресов драйвера EMM386. Например, чтобы указать драйверу EMM386 не использовать 64 Кбайта, начиная с адреса C000h:0, надо указать параметр X=COOO-CFFF.