ТаблицейБлоками.

Оптимизация и спасение IBM PC: командные файлы и загрузочное меню

Последняя модификация: 15.02.2018 г

Страница загружена с адреса: http://comp.site3k.ru/ibmpc/chaptr22.html

Моя студия веб-дизайна

Глава 22: Диалоговые командные файлы и загрузочное меню пользователя.

  1. Диалоговые командные файлы
  2. Собственное загрузочное меню
  3. Примеры загрузочного меню

Диалоговые командные файлы.

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

Для создания диалогового командного файла (Bat-файла), в нем требуется указать команду вызова входящей в состав Windows програм мы Choice.com занимающей 6 килобайт дисковой памяти или заимствованной из нортоновских утилит под MS-DOS программы BE.exe занимающей 21 килобайт. Последняя занимает больше места, но и предоставляет большие возможности, в результате чего, ее применение более удобно, а иногда и незаменимо. Однако, в большинстве случаев, можно обойтись, имеющейся на любом компьютере, программой Choice.com.

За вызовом программы Choice.com (описана в главе посвященной файлу Autoexec.bat) в бат-файле должны следовать команды условного перехода к метке, за которой начинаются команды выполняемые в случае данного кода завершения. Причем, начинаться они должны с команды перехода, запускаемой наибольшим кодом, а команда, запускаемая наименьшим кодом, в переходе не нуждается. Например:

@echo off
choice /cYNR “Сделай свой выбор”
if errorlevel=3 goto tre
if errorlevel=2 goto tu
echo Код возврата равен единице.
Goto end
:tre
echo Код возврата равен трем.
Goto end
:tu
echo Код возврата равен двум.
:end

Применение диалогов в командных файлах различно. Например, можно удалить команду “Pause” из файла SetRamd.bat, исполняемую, когда переменная Ramd принимает значение “С”, а вместо нее, в Autoexec.bat (или тот же SetRamd.bat) включить команды:

If %ramd%==C GoTo Error
:ERROR
Choice /cYN “Нет доступа к диску С. Продолжить загрузку?”

Собственное загрузочное меню.

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

  1. путем пошаговой загрузки
  2. путем перезагрузки с новым Config.sys
  3. путем создания загрузочного меню.

При этом последний способ является единственно удобным.

Файл Config.sys, назначение которого состоит в установке драйверов, не вошедших в комплект BIOS и замене некоторых содержащихся в нем, но не соответствующих требованию данной системы или пользователя, начиная с MS-DOS 6.22, получил блочную структуру, в которой обычный Config.sys, устанавливаемый Windows является лишь частным случаем, представленным одним блоком. Разделенный на блоки Config.sys имеет много общего с содержащими метки бат-файлами, где команды, идущие вслед за меткой, по сути, являются теми же блоками. Однако, поскольку интерпретацией Config.sys занимается не Command.com, а Io.sys, организация переходов в нем несколько иная.

Все блоки Config.sys (если их более одного) обязаны начинаться с заголовков (меток) заключенных в квадратные скобки. Сама структура загрузочного меню при этом, имеет следующий вид:

[MENU]
MENUITEM=метка1, Сообщение 1
MENUITEM=метка2, Сообщение 2
MENUITEM=метка3, Сообщение 3
MENUCOLOR=б,ф
MENUDEFAULT=метка,время

Где

[MENU] – блок, содержащий главное загрузочное меню

MENUITEM – пункт меню, после которого указывается имя исполняемого при его выборе блока и необходимый комментарий. Поскольку вывод загрузочного меню происходит раньше установки каких-либо драйверов, комментарий должен содержать только английские символы, иначе он будет выглядеть как узелковые письмена инков.

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

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

0 – черный

1 – синий

2 – зеленый

3 – бирюзовый

4 – красный

5 – фиолетовый

6 – коричневый

7 – белый

8 – серый (ярко-черный)

9 – ярко-синий

10 – ярко-зеленый

11 – ярко-бирюзовый

12 – ярко-красный

13 – ярко-фиолетовый

14 – желтый (ярко-коричневый)

15 – ярко-белый

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

Белый цвет лучше не применять, поскольку выделение варианта предлагаемого по умолчанию происходит именно белым и, либо это выделение не будет заметно на белом фоне (что неудобно), либо белые буквы не будут различимы при их выделении (что неудобно еще в большей степени). Впрочем, применение белого фона может применяться специально, чтобы сделать выделение невидимым. Наиболее щадащими зрение сочетаниями цветов являются 0,3 и 6,0. Неплохо, так же, воспринимается 10,0.

Выбор пункта меню, как и в меню загрузки Windows, вызываемом клавишей CTRL, осуществляется нажатием цифры соответствующей его порядковому номеру или клавишами перемещения курсора. После выбора (и нажатия ENTER) происходит:

  1. Исполнение команд указанных в блоке соответствующем значению выбранного меню (как и заголовок меню, заголовок блока должен заключатся в квадратные скобки2).
  2. Генерация переменной Config, принимающей значение имени выбранного блока, которая затем может быть использована в бат-файлах и командной строке (тем самым, во многих случаях заменяя вызов команды Choice.com или BE.exe), например, набором команд:
GoTo %Config%
:Метка1
Соответствующие команды.
GoTo END
:Метка2
Соответствующие команды.
:END

или, более кратко, но не так явно:

If %config%==метка1 GoTo метка
Команды исполняемые при %Config%=метка2
GoTo END
:метка
:END

Интерпритация Autoexec.bat в любом из случаев переходит к метке с именем, соответствующим значению выбрангого в Config.sys пункта меню3. При этом, переменная унаследует регистр заданных символов и при обработке Autoexec.bat, некоторыми интерпритаторами (например Command.com) этот регистр учитывается.

Загрузка некоторых драйверов может требоваться сразу в нескольких конфигурациях. В таких случаях, для сокращения файла Config.sys, их можно записать отдельным блоком, а в блоки требующие их загрузки включить команду вызова – INCLUDE4:

[Блок]
Команды исполняемые в первую очередь.
INCLUDE=отдельный_блок
Команды исполняемые последними.
[отдельный_блок]
Общие команды.

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

Каждый из блоков Config.sys может иметь вложенное меню, озаглавленное как SUBMENU, полностью аналогичное первоначальному (но поскольку наличие вложенного меню требует повторного вмешательства пользователя в процесс загрузки, наиболее удобным является перечисление всех возможных ее вариантов в едином меню, чтобы из-за необходимости постоянного выбора, загрузка не уподобилась пошаговой).

Таким образом, система команд загрузочного меню сводится к командам:

[MENU] – блок, содержащий главное загрузочное меню.
[COMMON] – блок, исполняемый при любых условиях.
[SUBMENU] – блок дополнительного (вложенного) меню.
MENUITEM – пункт меню. 
MENUDEFAULT – необязательный пункт, определяющий время ожидания реакции пользователя.
INCLUDE – команда включения блока содержащего наборы команд, общих для нескольких блоков, например: “INCLUDE=BLOCK”. 
MENUCOLOR – пункт выбора цветового оформления

Оператором присвоения (знаком равенства), как и везде в Config.sys, к каждому пункту присоеденяется значение, которое будет ему присвоено, если он будет выбран пользователем, а через запятую и пробел, необходимый коментарий. При чем, все это – только английскими символами.

Применение блоков COMMON и INCLUDE могут вызвать проблемы у программ настройки конфигурации MemMeker и Optimize (созданных задолго до появления загрузочных меню). По этому, в случае их применения, Config.sys лучше сделать длиннее, но проще по структуре.

Примеры загрузочного меню.

Меню загрузки с жесткого диска.

Config.sys:

[MENU]
menuitem=W, Windows
menuitem=N, NDOS
menucolor=0,3
menudefault=w,15
[W]
device=C:\windows\himem.sys
device=C:\WINDOWS\COMMAND\display.sys con=(ega,,1)
Country=007,866,C:\WINDOWS\COMMAND\country.sys
[N]
dos=high,umb
device=C:\windows\himem.sys
Buffers=20,3/x
Stackshigh=9,128
Fileshigh=15
fcbshigh=4 
lastdrivehigh=h
device=C:\windows\emm386.exe noems highscan
devicehigh=C:\windows\command\display.sys con=(ega,,1)
Country=007,866,C:\WINDOWS\COMMAND\country.sys
devicehigh=C:\DOS\oakcdrom.sys /D:mscd001
devicehigh=C:\Windows\ramdrive.sys /E 5120
Shell=c:\ndos.com @c:\dos\ndos.ini /p
devicehigh=C:\Windows\Command\ansi.sys

Autoexec.bat:

@echo off
cls
C:\ADINF\Virkill.exe -a -b -d -l C: D:
verify on
mode con codepage prepare=((866) C:\WINDOWS\COMMAND\ega3.cpi) > nul
mode con codepage select=866 > nul
If exist C:\моидок~1\авп.prf goto NORM
Echo Труба твоей русификации (No Rusification)
Pause
:NORM
PATH C:\windows;C:\windows\Command;C:\DOS;C:\dos\nc
if %config%==N goto gud
C:\dos\ndos /c C:\DOS\1.bat
rem set path=%path%;C:\PROGRA~1\MICROS~1\OFFICE
Set DirCMD= /OGN /p /b
:gud
C:\PROGRA~1\NORTON~1\NAVDX.EXE /Startup
Cls
C:\dos\be rowcol 5 35 "L O A D I N G" red
lh keyb ru,,C:\WINDOWS\COMMAND\keybrd3.sys > nul
set temp=C:\windows\temp
if %config%==W goto exit
set dircmd= /p
SET NU=C:\DOS
set nc=C:\dos\nc
LH C:\DOS\mouse > nul
lh C:\windows\command\mscdex /d:mscd001 > nul
SET SYMANTEC=C:\Dos\SYMANTEC
prompt $E[1;37m F12 $E[0;32m- Вызов оболочки Нортон$_$e[33m$P$G
alias @F12 lh NORTON
alias @F11 saver
alias @F5 `*dir /a /t | list /s^cls`
diskmon /protect+ /light+ > nul
saver
:exit

Загрузочное меню дискеты содержащей лечащие модули AdInf (переименованной в VirKil), AVP Inspector, программу DrWeb (переименованную в Test) и оболочку Volkov Commander.

Config.sys:

[menu]
menuitem=Test, AntiVirus Test
menuitem=NO, No Test
menuitem=AD, AdInfo
menuitem=NOCD, No Test, No CD
menuitem=NORAMD, No Ram Disk
menudefault=NO,10
menucolor=0,3
[AD]
Buffers = 40,8
Files = 20
Shell = \AdinfExt\Switcher.shl C:\ADINF
[TEST]
include Driv
devicehigh=ramdrive.sys /E 5120
devicehigh=ansi.sys
[NOCD]
include Driv 
devicehigh=ramdrive.sys /E 5120 
devicehigh=ansi.sys
[NO]
include Driv
devicehigh=oakcdrom.sys /D:mscd001 
devicehigh=ansi.sys
[NORAMD]
include Driv 
[DRIV]
dos=high,umb
device=himem.sys
Buffers=12/x
Stackshigh=9,128
Fileshigh=15
fcbshigh=4
lastdrivehigh=h
device=emm386.exe noems highscan
devicehigh=Display.sys con=(ega,,1)
country=007,866,country.sys

Autoexec.bat:

@echo off
CLS
Echo L O A D I N G
Verify on
SET DIRCMD=/ogn /p
If %config%==NORAMD GoTo NO
set LglDrv=27 * 26 Z 25 Y 24 X 23 W 22 V 21 U 20 T 19 S 18 R 17 Q 16 P 15
set LglDrv=%LglDrv% O 14 N 13 M 12 L 11 K 10 J 9 I 8 H 7 G 6 F 5 E 4 D 3 C
call setramd.bat %LglDrv%
copy A:\Block\*.* %ramd%: > nul
copy A:\command.com %ramd%: > nul
set comspec=%ramd%:\command.com
%ramd%:
Path %ramd%:
pkunzip -d %ramd%:\Arhiv.zip > nul
mode con codepage prepare=((866) ega3.cpi) > nul
mode con codepage select=866 > nul
lh keyb ru,,keybrd3.sys
LH Mouse.com > nul
if %config%==NOCD goto cd
lh mscdex.exe /D:mscd001 > nul
:cd
del %ramd%:\Arhiv.zip > nul
prompt $E[32mVolkov Commander$E[33m$_$P$G
md %ramd%:\temp
Set Temp=%ramd%:\temp
Set tmp=%ramd%:\temp
if %config%==NO GoTo NO
if %config%==NOCD GoTo NO
Test
:NO
if not %config%==NORAMD GoTo END
A:\block\Test /fn
:END
cls

Простое загрузочное меню жесткого диска, в случае необходимости, загружающее файловый менеджер Norton Commander в режиме "Command prompt only", и продолжающее загрузку Windows по выходе из него.

Config.sys:

[MENU]
menuitem=W, Windows
menuitem=D, DOS
menucolor=0,3
menudefault=w,5
[W]
include D
[D]
device=C:\windows\himem.sys
device=C:\WINDOWS\COMMAND\display.sys con=(ega,,1)
Country=007,866,C:\WINDOWS\COMMAND\country.sys

Autoexec.bat:

@echo off
cls
verify on
mode con codepage prepare=((866) C:\WINDOWS\COMMAND\ega3.cpi) > nul
mode con codepage select=866 > nul
lh keyb ru,,C:\WINDOWS\COMMAND\keybrd3.sys > nul
set temp=C:\windows\temp
PATH C:\windows;C:\windows\Command;C:\DOS;C:\dos\nc
goto %config%
:D
lh C:\dos\mouse
C:\dos\nc\nc
Mouse /UNINSTALL
:W

 

< Глава 21. Глава 22. Глава 23. >

 

Комментарии к странице

 

 

 


На главную страницу сайта