Компьютер и программыWEB-дизайнЛитература и поэзияГуманитарные наукиМастерскаяХронология материаловОбращение к посетителямСкачать шрифтыСкачать рефератыСоздание web сайта на заказСоздание веб сайтов (цены)Веб-сайты, созданные мной (потенциальным заказчикам)Полезные ссылкиОб автореСтатистика сайтаПоказать фреймы
|
Последняя модификация: 15.02.2018 г Страница загружена с адреса: http://comp.site3k.ru/ibmpc/chaptr22.html Глава 22: Диалоговые командные файлы и загрузочное меню пользователя.Диалоговые командные файлы.Диалоговыми, называются командные файлы, производящие те или иные действия в зависимости от выбора пользователя. Для создания диалогового командного файла (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 Нет доступа к диску С. Продолжить загрузку? Собственное загрузочное меню.В отличии от управления загрузкой программ, управление загрузкой драйверов может происходить только тремя способами:
При этом последний способ является единственно удобным. Файл 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 до 7). Белый цвет лучше не применять, поскольку выделение варианта предлагаемого по умолчанию происходит именно белым и, либо это выделение не будет заметно на белом фоне (что неудобно), либо белые буквы не будут различимы при их выделении (что неудобно еще в большей степени). Впрочем, применение белого фона может применяться специально, чтобы сделать выделение невидимым. Наиболее щадащими зрение сочетаниями цветов являются 0,3 и 6,0. Неплохо, так же, воспринимается 10,0. Выбор пункта меню, как и в меню загрузки Windows, вызываемом клавишей CTRL, осуществляется нажатием цифры соответствующей его порядковому номеру или клавишами перемещения курсора. После выбора (и нажатия ENTER) происходит:
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. >
|