Фигурнов В. Э. Ф49 ibm pc для пользователя. Изд. 7-е, перераб и доп

Вид материалаКнига

Содержание


Be weekday
fC C:\BAT\NDD_DATE.2 C:\BAT\NDD_DATE.
Be shiftstate
Be shiftstate
Be weekday
Be shiftstate
Часть 8. Настройка конфигурации MS DOS
Часть 8. Настройка конфигурации MS DOS
Goto %config
Подобный материал:
1   ...   58   59   60   61   62   63   64   65   ...   87
Глава 40. Настройка конфигурации DOS


Dh'ni) "ч<^ i Hi-' ком-и i/i

и 3>)ЧЦ(:ИМ01..:1 и

')! .Ц'!Я Надели


Примеры


Вьтолненио комянд

и записимос и.'-

of нажатия клавиш


Пример


echo. !date>C:\BAT\NDD_DATE.1

: NO_NDD


Некоторые программы желательно выполнять не раз в день, а раз в неделю или по оп-

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

WEEKDAY программы BE из комплекса Norton Utilities. Команда BE WEEKDAY выдает

код возврата 1 в воскресенье, 2 в понедельник и т..д., 7 Ч в субботу. Этот код возврата

можно проверить с помощью переменной ERRORLEVEL в команде IF.


Пусть по пятницам следует выполнять полную проверку диска С: с помощью команды NDD

С: /С, а в остальные дни недели Ч только проверку файловой структуры с помощью коман-

ды NDD С: /0. Это можно осуществить с помощью следующего фрагмента файла AUTO-

EXEC.BAT (мы предполагаем, что программа BE находится в одном из каталогов, указан-

ных в команде Path):


^ BE WEEKDAY


if ERRORLEVEL 7 goto NOFRIDAY

If ERRORLEVEL 6 goto FRIDAY

: NOPRIDAY

NDD C: /Q

goto NDD_DONE

: FRIDAY

NDD C: /C

: NDD_DONE


На самом деле данный фрагмент файла AUTOEXEC.BAT следует включить во фрагмент,

приведенный в предыдущем примере. Тогда полная проверка диска С: будет выполняться

раз в неделю по пятницам, а в остальные дни (но не чаще раза в день) Ч проверка файло-

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

областей диска С: программой Image:


echo. !date>C:\BAT\NDD_DATE.2

^ fC C:\BAT\NDD_DATE.2 C:\BAT\NDD_DATE.

if ERRORLEVEL 1 goto NO_NDD

BE WEEKDAY

7 goto NOFRIDAY

6 goto FRIDAY


differences" > nul


find "FC:


if ERRORLEVEL

if ERRORLEVEL

: NOFRIDAY

NDD C: /Q

goto NDD_DONE

: FRIDAY

NDD C: /C

: NDD_DONE

Image C:


echo. ;date>C:\BAT\NDD_DATE.1

: NO_NDD


MS DOS позволяет пользователю влиять на процесс начальной загрузки с помощью

нажатия на определенные клавиши. Например, если при появлении сообщения

"Starting MS DOS..." нажать на клавишу (JF8], то MS DOS перейдет в режим пошаго-

вого выполнения файлов CONFIG.SYS и AUTOEXEC.BAT. Это удобно, так как при

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

ля и не беспокоит его какими-либо сообщениями.


В командных файлах, в частности, в файле AUTOEXEC.BAT также можно выполнять

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

виша. Для этого недели можно воспользоваться функцией SHIFTSTATt программы BE

из комплекса Norton Utilities. Команда BE SHIPTSTATE выдает код возврата 1 при нажа-

тии правой клавиши [Shifti, 2 при нажатии левой клавиши (Shift), 3 при нажатии

клавиши [Ctrl), 4 при нажатии клавиши ГАГГ). При нажатии нескольких из указанных

клавиш приведенные коды суммируются. Например, при нажатии (Ctrl) и левой кла-

виши [Shift) код возврата будет Ь. Код возврата можно проверить с помощью пере-

менной ERRORLEVEL в команде IF.


1усть выполнение команды NDD С: /С надо отменить, если пользователь нажал (^^J,

Q^l или (AID. Это можно осуществить с помощью следующего фрагмента файла ATJTO-

D^EC.BAT (мы предполагаем, что программа BE находится в одном из каталогов, указан-

ных в команде Path):


^ BE SHIFTSTATE


if ERRORLEVEL 1 goto NO_NDD

NDD C: /C

: NO_NDD


Часть 8. Настройка конфигурации MS DOS


Пример процедуры

обслуживания диска


В заключение приведем пример фрагмента файла AUTOEXEC.BAT, отвечающего за

запуск программ обслуживания диска: NDD, SpeeDisk и Image. Раз в неделю по пят-

ницам выполняется полная проверка диска С: программой NDD и оптимизация разме-

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

полняется проверка файловой структуры диска программой NDD. И ежедневно, неза-

висимо от дня недели, выполняется создание копий системных областей диска С: про-

граммой Image. В примере предполагается, что каталог С:\ВАТ существует, а про-

грамма BE находится в одном из каталогов, указанных в команде Path.


^ BE SHIFTSTATE


С: \BAT\NDD_DATE.

NO NDD


find "FC:


differences"


nul


if ERRORLEVEL 1 goto NO_NDD

echo. ;date>C: \BAT\NDD_DATE. 2

fc C: \BAT\NDD_DATE. 2

if ERRORLEVEL 1 goto

^ BE WEEKDAY


if ERRORLEVEL 7 goto NOFRIDAY

if ERRORLEVEL 6 goto FRIDAY

: NOFRIDAY

NDD C: /Q

goto NDD_DONE

: FRIDAY

NDD C: /C

BE SHIFTSTATE


if ERRORLEVEL 1 goto NO_NDD

SPEEDISK C: /FD

: NDD_DONE

^ BE SHIFTSTATE


if ERRORLEVEL 1 goto NO_NDD

Image C:


echo. !date>0: \BAT\NDD_DATE. 1

: NO_NDD


Данный фрагмент может быть вставлен в конец файла AUTOEXEC.BAT, перед коман-

дой вызова программы-оболочки.


40.13. Несколько файлов конфигурации


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

компьютера, например для работы в DOS Ч одну, а для Windows Ч другую. Один из

способов добиться этого Ч создать версии файлов AUTOEXEC.BAT и CONFIG.SYS

для каждой требуемой конфигурации и с помощью специального командного файла

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


Пусть, например, версии файлов AUTOEXEC.BAT и CONFIG.SYS записываются в

каталог C:\EXE\CONFIG с именами AUTOEXEC.ххх и CONFIG.xxx, где ххх соответ-

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

(например, DOS Ч для работы в DOS, WIN Ч для Windows, TD Ч для Turbo Debug-

ger и т.д.). Тогда с помощью следующего командного файла REBOOT.BAT можно бы-

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


@>echo off


if /%^ == / goto NoParm


if not exist c:\exe\config\config.%1 goto NoCONF

if not exist c:\exe\config\autoexec.%1 goto NoAUTO

del c:\config.bak > nul

del c:\autoexec.bak > nul

ren c:\config.sys c:\config.bak

ren c: autoexec.bat c:\autoexec.bak

copy c:\exe\config\config.%1 c:\config.sys > nul

copy c:\exe\config\autoexec.%1 c:\autoexec.bat > nul

smartdrv /c

be reboot

: NoParm


echo He задан параметр командного файла

goto exit

: NoCONF


echo He найден файл C:\EXE\CONFIQ\CONFIQ.%1

goto exit

: NoAUTO

echo He найден файл C:\EXE\CONFIG\AUTOEXEC.%1


: exit


Например, REBOOT WIN


Х перезагрузка с файлами CONFIG.WIN и AUTOEXEC.WIN.


..,..-;' Хl,,.Х. 1. Строка SMARTDRV /Собеспечивает сброс данных из кэша на диск. Она нужна

лишь при кэшировании записи, если Вы используете для кэширования программу

SMARTDRV.ЕХЕ. При использовании других программ кэширования эту строку следует

заменить. Если же кэш отсутствует или не оптимизирует запись на диск, эту строку можно

убрать.


2. Аналогичным образом обеспечивается загрузка старой версии DOS при загрузке

Windows 95. Там версии файлов AUTOEXEC. BAl и CONHG.SY& для загрузки старой вер-

сии DOS называются AUTOEXEC.DOS и CONFIG.DOS, и расположены они в корневом

каталоге загрузочного диска. А версии файлов AUTOEXEC.BAT и CONFIG.SYS, исполь-

зуемые самой Windows 95, переименовываются при загрузке старой версии DOS в AUTO-

EXEC.W40 и CONFIG.W40. Аналогично переименовываются также файлы 10.SYS и

MSDOS.SYS. Только выполняются эти действия не командным файлом, а программой за-

грузки Windows 95.


1иапоговые файлы конфигурации


4iH^;m"> Х m'ltWlii <Д

I'IG К^^


/^ u i (.Н_Л1.'. -..,. IJ/4 1


Еще один способ обеспечить различные варианты конфигурации компьютера при на-

чальной загрузке Ч выводить в ходе начальной загрузки запросы и изменять конфигу-

рацию в зависимости от ответа пользователя.


Простейший способ диалогового конфигурирования состоит в том, что некоторые ко-

манды файла CONFIG.SYS можно пропускать. Если после имени команды (перед зна-

ком равенства) в команде файла CONFIG.SYS поставить знак вопроса, то при выпол-

нении файла CONFIG.SYS DOS выведет команду на экран и спросит, надо ли ее вы-

полнять "[Y/N] ?". Если ответить Q, то команда будет выполнена, если (D Ч то нет.

Например, при наличии в файле CONFIG.SYS команды devlce7=c:\td\td386.sys DOS

будет в процессе начальной загрузки сообщение devlce?=c:\td\td386,sys [Y/N]? и

выполнять или пропускать (игнорировать) данную команду в зависимости от ответа

пользователя.


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

и тем же, можно с помощью программы CHOICE или аналогичной ей организовать

выбор из меню в файле AUTOEXEC.BAT. Формат команды:


CHOICE (JC'.cnucoK-cuMeoAoej {f\Х.cuм.вoл,чucлo-ceк.унд~} C/N] сообщение


Здесь параметр сообщение указывает сообщение, выводимое на экран (обычно оно в

команде заключается в кавычки). Параметр /C'.cnucoK-символов указывает допустимые

символы, которые может ввести пользователь в ответ на сообщение. Если данный па-

раметр не указан, допустимые символы Ч это Y и N . Параметр /N (если он указан)

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

/^'.символ, число-секунд (если он указан) задает ответ по умолчанию (символ), кото-

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

времени не нажал ни на одну клавишу.


Программа Choice выводит указанное сообщение и ждет, пока пользователь не введет

один из указанных в списке символов. При указании параметра /Т, если в течение ука-

занного в этом параметре времени пользователь не нажал ни на одну клавишу, то при-

нимается указанный в этом параметр ответ. После выполнения программы значение

переменной ERRORLEVEL устанавливается равным номеру введенного символа в спи-

ске.


Пример ^ приведенном ниже примере у пользователя запрашивается, какую проверку диска С: сле-


' дует делать: полную, краткую или никакую.


echo Проверка диска: F - полная, Q -

choice /c:FQN /T:N,10 /N "Введите P,

if error-level 3 goto FULLCHK

if errorlevel 2 goto QUICKCHK

echo Проверка диска не производится

goto exit

: FULLCHK

NDD C: /C


краткая,

Q или N


^ Часть 8. Настройка конфигурации MS DOS


Меню в файле

CONFIG.SYS


Блок COMMON


Блок MENU


Команды для

организации меню


goto exit

: QUICKCHK

NDD С: /Q

: exit


Если пользователь в течение 10 секунд не выбрал ответ, принимается ответ N. Следует за-

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

убывания значений: сначала проверять на самое большое значение, затем Ч на следующее

по убыванию и т.д.


Начиная с версии 6.0 MS DOS в файле CONFIG.SYS стало возможно организовывать

меню. Для этого файл CONFIG.SYS стал рассматриваться не просто как последова-

тельность строк, а как совокупность блоков.


Блоки


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

имя блока в квадратных скобках. Затем следуют команды, относящиеся к данному

блоку. Эти команды могут либо задавать те или иные действия по установке конфигу-

рации (как это было описано выше), либо определять меню, выводимое при начальной

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

выбора пользователя в выведенном меню. При выполнении блока его команды выпол-

няются по очереди.


Блок с именем COMMON (таких блоков в файле CONFIG.SYS может быть несколько)

выполняется всегда. Если в начале файла CONFIG.SYS нет заголовка блока, считает-

ся, что там стоит заголовок [COMMON], то есть строки файла CONFIG.SYS до перво-

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

(до версии 6.0 MS DOS) форматом файла CONFIG.SYS, в котором содержимое

CONFIG.SYS не разделялось на блоки.


Блок с именем MENU содержит начальное (стартовое) меню, выводимое при загрузке

компьютера. Это меню выводится до выполнения всех других команд файла CON-

FIG.SYS, даже если блок с именем MENU находится не в начале файла CONFIG.SYS.


Для организации меню в файле CONFIG.SYS используются следующие команды:


MENUITEM имя-блока, сообщение Ч определение пункта меню;

SUBMENU имя-блока-меню, сообщение Ч определение пункта меню, при выборе


которого выводится подменю (эта возможность используется редко);

MENUDEFAULT имя-блока, число-секунд Ч определение пункта меню, выполняемо-

го "по умолчанию": при нажатии клавиши (ТпТеТ) или по истечении заданной в

команде задержки.


Как правило, данные команды записываются в блок с именем MENU .


При выполнении блока меню DOS выведет указанные в предложениях MENUITEM и

SUBMENU сообщения и предложит выбрать номер пункта.


Пример При наличии в файле CONFIG.SYS команд:


[MENUJ


MENUITEM=DOSCONF, Работа в DOS

MENUITEM=WINDOWS, Работа в Windows

MENUITEM=TD, Использование Turbo Debugger

MENUDEFAULT=WINDOWS, 5


DOS выведет при начальной загрузке меню:


MS DOS 6.22 Startup Menu


1. Работа в DOS


2. Работа в Windows


3. Использование Turbo Debugger


Вы должны будете нажать (i), (D или (D, при этом будут выполняться команды из

блоков [DOSCONF], [WINDOWS] и [TD] соответственно (а кроме того, команды из блоков

[COMMON]). Если Вы нажмете (Enter) или не ответите в течение 5 секунд, будет принят

ответ (13 ([WINDOWS]), как это указано в команде MENUDEFAULT. Если бы этой команды

задано не было, DOS ждала бы до тех пор, пока Вы не ответили (Т), (2) или (D.


Таким образом, файл CONFIG.SYS в данном случае может иметь вид:


[COMMON]

команды, выполняемые всегда (для всех конфигураций)


^ Часть 8. Настройка конфигурации MS DOS


Меню в файле

CONFIG.SYS


Блок COMMON


Блок MENU


Команды для

организации меню


goto exit

: QUICKCHK

NDD С: /Q

: exit


Если пользователь в течение 10 секунд не выбрал ответ, принимается ответ N. Следует за-

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

убывания значений: сначала проверять на самое большое значение, затем Ч на следующее

по убыванию и т.д.


Начиная с версии 6.0 MS DOS в файле CONFIG.SYS стало возможно организовывать

меню. Для этого файл CONFIG.SYS стал рассматриваться не просто как последова-

тельность строк, а как совокупность блоков.


Блоки


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

имя блока в квадратных скобках. Затем следуют команды, относящиеся к данному

блоку. Эти команды могут либо задавать те или иные действия по установке конфигу-

рации (как это было описано выше), либо определять меню, выводимое при начальной

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

выбора пользователя в выведенном меню. При выполнении блока его команды выпол-

няются по очереди.


Блок с именем COMMON (таких блоков в файле CONFIG.SYS может быть несколько)

выполняется всегда. Если в начале файла CONFIG.SYS нет заголовка блока, считает-

ся, что там стоит заголовок [COMMON], то есть строки файла CONFIG.SYS до перво-

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

(до версии 6.0 MS DOS) форматом файла CONFIG.SYS, в котором содержимое

CONFIG.SYS не разделялось на блоки.


Блок с именем MENU содержит начальное (стартовое) меню, выводимое при загрузке

компьютера. Это меню выводится до выполнения всех других команд файла CON-

FIG.SYS, даже если блок с именем MENU находится не в начале файла CONFIG.SYS.


Для организации меню в файле CONFIG.SYS используются следующие команды:


MENUITEM имя-блока, сообщение Ч определение пункта меню;

SUBMENU имя-блока-меню, сообщение Ч определение пункта меню, при выборе


которого выводится подменю (эта возможность используется редко);

MENUDEFAULT имя-блока, число-секунд Ч определение пункта меню, выполняемо-

го "по умолчанию": при нажатии клавиши (Enter) или по истечении заданной в

команде задержки.


Как правило, данные команды записываются в блок с именем MENU .


При выполнении блока меню DOS выведет указанные в предложениях MENUITEM и

SUBMENU сообщения и предложит выбрать номер пункта.


Пример При наличии в файле CONFIG.SYS команд:


[MENUJ


MENUITEM=DOSCONF, Работа в DOS

MENUITEM=WINDOWS, Работа в Windows

MENUITEM=TD, Использование Turbo Debugger

MENUDEFAULT=WINDOWS, 5


DOS выведет при начальной загрузке меню:


MS DOS 6.22 Startup Menu


1. Работа в DOS


2. Работа в Windows


3. Использование Turbo Debugger


Вы должны будете нажать (i), (D или CD, при этом будут выполняться команды из

блоков [DOSCONF], [WINDOWS] и [TD] соответственно (а кроме того, команды из блоков

[COMMON]). Если Вы нажмете (Enter) или не ответите в течение 5 секунд, будет принят

ответ (2) ([WINDOWS]), как это указано в команде MENUDEFAULT. Если бы этой команды

задано не было, DOS ждала бы до тех пор, пока Вы не ответили (Т), (2) или CD.


Таким образом, файл CONFIG.SYS в данном случае может иметь вид:


[COMMON]

команды, выполняемые всегда (для всех конфигураций)


Раскраска стартового

. меню


Согласование меню

файла CONFIG.SYS

и файла

AUTOEXEC.BAT


Пример


[MENU]


MENUITEM=DOSCONF. Работа в DOS

MENUITEM=WINDOWS, Работа в Windows

MENUITEM=TD, Использование Turbo Debugger

MENUDEFAULT=WINDOWS, 5

[DOSCONF]


команды, выполняемые при работе в DOS

[WINDOWS]


команды, выполняемые при работе в Windows

[TD]


команды, выполняемые при работе с Turbo Debugger

[COMMON]

команды, выполняемые всегда (для всех конфигураций)


Здесь первую строку ([COMMON]), как указывалось выше, можно было бы не писать. Кро-

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

гих команд файла CONFIG.SYS, поэтому первый блок [COMMON] с тем же успехом можно

было бы поместить и после строки с командой MENUDEFAULT.


Если желательно сделать стартовое меню более привлекательным, Вы можете раскра-

сить его в разные цвета с помощью команды файла CONFIG.SYS MenuColor. Формат

этой команды: КЫ\1СОШЯ=цвет-сим.вола, цвет-фона. Если параметр цвет-фона опус-

тить, то цвет фона будет черным. Цвет символа и цвет фона кодируются числами от О

до 15:0Ч черный, 1 Ч синий, 2 Ч зеленый, 3 Ч сиреневый, 4 Ч красный, 5 Ч ма-

линовый, 6 Ч коричневый, 7 Ч светло-серый, 8 Ч темно-серый, 9 Ч голубой, 10 Ч

ярко-зеленый, II Ч ярко-сиреневый, 12 Ч ярко-красный, 13 Ч ярко-малиновый, 14 Ч

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

употреблять не следует Ч большинство видеоконтроллеров при этом выводит мигаю-

щие символы. Например, MENUCOLOR=14, 1 Ч вывод желтых символов на синем фоне.


Замоч.чния 1. Многие программы оптимизации использования памяти не умеют хорошо

оптимизировать файлы CONFIG.SYS, содержащие стартовое меню. Так, при оптимизации

использования памяти программой МегпМакег, описанной в конце этой главы, при оптими-

зации одной ветви файла CONFIG.SYS остальные ветви разоптимизируются.


2. Если в нескольких блоках файла CONFIG.SYS используются дублирующиеся команды,

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

иС1-\}ОЕ.=11МЯ-блока . Однако следует заметить, что некоторые программы оптимизации ис-

пользования памяти не умеют оптимизировать файлы CONFIG.SYS с командами INCLUDE.

Так, при оптимизации использования памяти программой MemMaker, описанной в главе 41,

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

антах стартового меню, хотя оптимизация этого блока проводилась, естественно, для како-

го-то одного варианта меню.


Очень часто при использовании меню в файле CONFIG.SYS при выборе того или иного

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

AUTOEXEC.BAT. Было бы очень неудобно, если бы в файле AUTOEXEC.BAT требова-

лось повторно запрашивать, какой вариант команд надо выполнить. К счастью, без

этого можно обойтись. Имя блока команд, выбранного в меню файла CONFIG.SYS,

автоматически присваивается переменной окружения CONFIG, так что в файле

AUTOEXEC.BAT Вы при необходимости можете задать различные действия в зависи-

мости от значения этой переменной.


Для приведенного выше примера меню вфайле CONFIG.SYS Вы можете использовать сле-

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

команды в зависимости от выбора, сделанного в стартовом меню:


^ GOTO %CONFIG%

: DOSCONP


команды, выполняемые-при работе в DOS

GOTO CONTINUE

: WINDOWS


команды, выполняемые при работе в Windows

GOTO CONTINUE

:TD


команды, выполняемые при работе с Turbo Debugger

: CONTINUE

команды, выполняемые всегда (для всех конфигураций)