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

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

Содержание


Часть 7. DOS для опытного пользователя
Х'Г'.ХХ^Х^",rr KDMi
Подобный материал:
1   ...   39   40   41   42   43   44   45   46   ...   87
Глава 35. Обслуживание дисков в DOS ................................................... 376 ^

Глава 36. Защита от вирусов при работе в DOS ...................................... 392

Глава 37. Восстановление информации на дисках ...................................415

Глава 38. Подготовка жестких дисков в DOS .......................................... 423

Глава 39. Использование оперативной памяти в DOS ............................. 431


Глава 32


Командные файлы DOS


Довольно часто в процессе работы с компьютером обнаруживается, что необходимо по-

вторять одни и те же команды DOS (может быть, с небольшими изменениями) для то-

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

система DOS позволяет записать нужную для этого последовательность команд в спе-

циальный файл, называемый командным файлом. Командный файл должен иметь рас-

ширение .ВАТ. Последовательность команд, записанную в файле, можно выполнить,

набрав имя командного файла (расширение .ВАТ при этом можно не указывать).


Пример Х' Я^ оптимизации размещения файлов на жестком диске (иначе говоря, "сжатия" диска)


1 можно использовать такую последовательность команд:


' с: Ч переход на диск С::

I cd \ Ч переход в корневой каталог:

I wipeinfo c:\*.bak /N /S /batch Ч удаление файлов с расширением, bake диска С::

\ speedisk с: /fd /v Ч сжатие диска С:.


1 Чтобы не набирать каждый раз эти команды, создадим файл COMPACT.ВАТ следующего

1 содержания:


1 с:

'. cd \


I wipeinfo c:\".bak /N /S /batch

I speedisk c: /fd /v


::' Тогда при вводе команды COMPACT выполнится нужная последовательность команд.


32. 1. Выполнение командных файлов


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


1. Для выполнения командного файла, находящегося в текущем каталоге или в одном

из каталогов, указанных в команде DOS Path, необходимо ввести имя этого файла

и параметры (о параметрах командных файлов см. ниже). Расширение имени файла

(т.е. .ВАТ) можно не указывать.


2. Для выполнения командных файлов, не находящихся в текущем каталоге или в од-

ном из каталогов, указанных в команде DOS Path, необходимо указывать полное

имя командного файла, включающее путь к тому каталогу, в котором находится ко-

мандный файл. Расширение имени файла .ВАТ можно не указывать.


Например, пусть текущий каталог Ч C:\DOC\WORK, а надо выполнить командный

файл ACtOUNT.BAl, находящийся в каталоге C:\DOC\BATCH, и указать параметры

командного файла BILL. DOC и /P. Тогда для выполнения этого командного файла необ-

ходимо ввести следующую команду: c:\doc\batch\account bill. doc /p , или команду

..\batch\account bill. doc /p .


3. Вы можете прервать выполнение командного файла, нажав (CtrlJ(T) или

^Ч~"Ч^ После этого на экране появится запрос:


Terminate batch job (Y/N)?

(Прервать выполнение командного файла (Да/Нет)?)


Если ответить (Y), то выполнение командного файла будет окончено, а оставшиеся

команды из командного файла будут проигнорированы. Если ответить QQ, то выпол-

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


4. Если вынуть дискету, на которой расположен выполняемый в данный момент ко-

мандный файл, то перед выполнением следующей команды DOS попросит Вас сно-

ва вставить эту дискету в дисковод.


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

(и, если надо, параметры). Но после окончания работы вызванного файла выполне-

ние исходного командного файла продолжено не будет.


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

го файла, а затем продолжить выполнение исходного командного файла, то это

можно сделать командой: call имя-командного-файла ^параметры)


32.2. Вызов другого командного файла


Назначение Если из командного файла вызвать другой командный файл, вставив в него имя этого

командного файла с необходимыми параметрами, то после завершения вызванного

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

возврат необходим, следует использовать команду call.


Форма~! команды call имя-командного-файла ^параметры)


Команда Call вызывает выполнение командного файла из другого командного файла.

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

файла, то эти параметры передаются командному файлу, они доступны там как

значения символов %1 Ч %9. По окончании выполнения вызванного командного

файла продолжается (со следующей строки) выполнение исходного командного файла.


Замечания. 1. В команде Call не допускается перенаправления ввода-вывода (использова-

ния символов "<", ">" и "!").


2. Команда Call работает в MS DOS, начиная с версии 3.3. В предыдущих версиях DOS

надо было использовать команду command /С имя-командного-файла (параметры^ .


32.3. Пошаговое выполнение командных файлов


В MS DOS, начиная с версии 6.2, возможно вызвать командный файл в пошаговом

режиме. Это может быть очень удобно для отладки кмандных файлов.


Форма г команды command /Y /С имя-командного-файла ^параметры)


Текст каждой команды будет выводиться перед выполнением на экран. Для

выполнения команды надо нажать клавишу Q или (Enter), для пропуска команды Ч

CM) или djc).


32.4. Параметры командных файлов


Часто приходится выполнять одни и те же команды или последовательности команд

DOS с весьма небольшими отличиями. Например, для трансляции программы на Форт-

ране с помощью транслятора фирмы Microsoft надо набирать команды типа: fl /412

/AL /Ox /FP187 /с имя-файла . Чтобы упростить вызов этого транслятора, можно со-

здать файл FORT.ВАТ следующего содержания:


fl /412 /AL /Ox /FP187 /С XI


При выполнении этого командного файла символ %1 будет заменен на значение перво-

го параметра при вызове командного файла. Например, если ввести команду FORT

SIMPSON.FOR, то вместо %1 будет подставлено SIMPSON.FOR и тем самым будет вы-

полнена команда^ /412 /AL /Ox /FP187 /с SIHPSON.FOR


Символы %1 Ч %9 Всего может быть использовано до девяти параметров, обозначаемых символами %1

Ч %9. Если в командной строке при вызове командного файла задано меньше девяти

параметров, то "лишние" символы из %1 Ч %9 замещаются пустыми строками. Если

Вы хотите использовать в командном файле более девяти параметров, можно

применить команду shift (см. ниже).


Символ %0 В командном файле можно использовать также символ %0, значение которого Ч имя

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

вызвавшей командный файл).


Пример


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

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

Так, чтобы в командном файле указать файл XYZ% .СОМ, надо написать в строке ко-

мандного файла XYZ%%.COM.


Иногда в командном файле требуется применить более девяти параметров, либо

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

можно использовать команду Shift. Формат команды: shift .


Команда Shift в командном файле присваивает новые значения символам %0Ч%9. При

этом %0 присваивается старое значение %1, %1 Ч старое значение %2 и т.д. %9

присваивается значение следующего за старым значением %9 параметра в командной

строке, а если он не задан, то новое значение %9 пустая строка. Команду Shift можно

использовать несколько раз.


-,...- -.,,..= "ее", %)4

%0 = "аа", %)1 = "bb", %2 = "ее"


Пусть командный файл xxx.bat вызван следующей командной строкой: ххх аа bb со . Тогда

%0 = "xxx.bat", %1 = "аа", %2 = "bb", %3 = "ее", %)4 Ч %9 = пустые строки. После вы-


полнения команды Shift:


.о9 = пустые строки. После вы-

%3 Ч %)9 = пустые строки.


"./. .^}'Х/'h'


'..'. "\Х^. Ч' !li^Хl Х'. ':

'i.Х^^.jХ^Х^l^.^ ^""


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

в пакетный файл вставить команду echo off, то выполняемые за ней команды не будут

выводиться на экран. После выдачи команды echo off часто полезно использовать

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

командного файла.


Команда echo on включает режим вывода выполняемых команд на экран. Очень часто в

качестве первой строки командного файла используется команда echo off. В этом слу-

чае в начале выполнения командного файла на экран выводится строка echo off, а

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


Можно избежать вывода (дублирования) на экран и любой отдельной строки

командного файла. Для этого надо поставить в начале этой строки символ "@". В част-

ности, можно избежать выдачи на экран команды echo off, поставив перед ней символ

"@": @echo off.


Хо '~f


.6


iuH^ {'


h^line


t.'~iU1:!i ;,..{;. 'Х


Пример


Пример


Команда rem позволяет включать в командный файл комментарии, которые не будут

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

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

жим вывода исполняемых команд на экран, то комментарии выводятся на экран, а если

этот режим выключен командой echo off, то комментарии в командном файле на экран

не выводятся.


гепп любые-символы

rem Этот текст является комментарием


Перед комментариями, которые нежелательно выводить на экран даже при отладке

(при включенном режиме вывода выполняемых команд командного файла на экран),

целесообразно ставить символ "@".


@>rem Этот текст является комментарием


.;,1Л1,.<,"1.;. в комментарии не следует употреблять символов "<", ">", и ";" Ч они

интерпретируются как символы перенаправления ввода-вывода DOS.


32.7. Сообщения при вы по" i нении командного файла


)и выпопнении командного файла


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


^ Часть 7. DOS для опытного пользователя


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


': -чуч^ние энуковок"'

:1-" н.чла


ХХ"г.-' )/;

i;v(; "п" ст!)(1ки


Вынод сообщений

р. г^айл


echo сообщение


Сообщение, выдаваемое с помощью команды echo, выводится на экран даже тогда, ког-

да режим вывода исполняемых команд на экран выключен командой echo off. Сообще-

ние не может быть пустым или равным on или off, так как команды echo on и echo off

управляют режимом вывода исполняемых команд на экран, а команда echo без пара-

метров сообщает, включен или выключен режим echo.


.i.i',:Ч<Х.:iu'4 1. В сообщении не следует употреблять символов "<", ">", и "!" Ч они

интерпретируются как символы перенаправления ввода-вывода DOS.


2. Перед командой echo сообщение желательно выполнить команду eecho off, чтобы

сообщение не выводилось на экран дважды.


С помощью команды echo можно получить звуковой сигнал компьютера. Для этого сле-

дует в сообщение, выводимое командой echo, включить символ с кодом 7. Это можно

сделать, нажав клавишу ГАТТ) и, не отпуская ее, клавишу Q в правой части клавиату-

ры (т.е. клавишу (Ноте)).


'3. ti'.<' Х"l:llllllХ Получить звуковой сигнал можно и с помощью программы BE из комплекса

программ Norton Utilities. Формат команды: BE ВЕЕР .


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

ния удобочитаемости сообщений), можно использовать команду echo. (точка должна

следовать сразу за словом "echo"). Другой вариант Ч вывести сообщение, состоящее

из одного символа с кодом 255.


С помощью средств перенаправления ввода-вывода DOS (см. главу 16) можно

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

протоколирования работы командного файла. Формат команды:


echo сообщение " имя-файла Ч добавление строки с сообщением в конец файла (если


файл не существует, то он создается);


echo сообщение > имя-файла Ч создание файла и запись в него строки с сообщением

(если такой файл уже существует, то его старое содержимое будет потеряно).


32


8. Приостановка выполн


ч-ч-и


I" '""I /-. ч Х-".? 1Л f~> >.. Х Х ') /".- "Х


'-"' .ч,'чрпие


^ Х'Г'.ХХ^Х^",rr KDMi

г-;! ,1^" "нечио


)НД!,1

команды


Подсказка о

^'^сгвиях


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

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

можно использовать команду pause .


pause

При выполнении этой команды на экран выводится сообщение:


Strike a key when ready . . .

(Нажмите любую клавишу, когда будете готовы)


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

цифровую клавишу, СПробел^ или [Enter), выполнение командного файла будет продол-

жено. Если нажатьГ^Т?) (Т) или ( Ct rl) (Break), то будет выведено сообщение:

"Terminate batch job (Y/N)^" (Прервать выполнение командного файла, YЧда, NЧ

нет). Если ответить @, то выполнение командного файла будет окончено, а оставшие-

ся команды из командного файла будут проигнорированы. Если ответить (N), то выпол-

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


Перед выдачей команды pause полезно вывести сообщение о необходимых действиях:


echo Поставьте дискету DISK01 на дисковод А:

pause


32.9. Выполнение команды для набора ч)лйгю-л


.i'ii учение


Команда For позволяет выполнить программу или команду DOS для нескольких файлов

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

непосредственно вводиться пользователем.


Примеры


for %х in (список) do команда


x Ч любой символ (кроме 0-9, чтобы не было смешения с параметрами командных


файлов %0-%9);

список Ч одно или несколько имен файлов, разделенных пробелами. В именах файлов


можно использовать символы * и ? ;


команда Ч любая программа или команда DOS, кроме команды For. Если в команде

.употреблено %х, то оно заменяется именами файлов из списка.


При использовании команды For в командном файле вместо %х надо указывать °/о°/оХ

(см. примеры ниже).


При вызове из командной строки DOS:


for Ко In (".asm) do rnasm Xc Ч для всех файлов из текущего каталога с расширением


.ASM вызвать макроассемблер M.ASM:


for Xf In (*.pas ".exe) do fc Xf e^:1^fЧ сравнить файлы с расширениями .PAS и .EXE


из текущего каталога с такими же файлами на диске А: :


for He In (1 2 3456789 0) do copy He*.* d: Ч копировать все файлы из текущего


каталога с именами, начинающимися с цифры, в текущий каталог диска D: .


В командном файле те же примеры надо было бы записать так:


for НПО In (".asm) do masm По

for Hf In (i.pas *.exe) do fc HHf a:Uf

for ИКС In (1 2 3456789 0) do copy Пс*.* d:


При наличии на диске длинных имен файлов или каталогов, сгенерированных в

Windows 95 или Windows NT, команда for по умолчанию не будет замечать эти имена,

а будет видеть (и выдавать) только соответствующие короткие имена. Однако в MS

DOS 7.0 Вы можете переключить команду for на работу с длинными именами. Для

этого перед командой for надо выдать команду LFNFOR ON. Для возврата к работе с

короткими именами можно выдать команду LFNFOR OFF .


Пример


i.i..'<. И-'!' 'ti


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

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


Любая строка командного файла, начинающаяся с двоеточия ":", воспринимается при

обработке командного файла как метка. Имя метки определяется набором символов,

следующих за двоеточием до первого пробела или конца строки (остаток строки после

первого пробела игнорируется).


Для того чтобы указать командному процессору DOS, что требуется продолжить вы-

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

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


GOTO метка


Если метка в команде GOTO не указана или не найдена в командном файле, то

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


I GOTO ххх

::


: ххх

Х REM продолжение выполнения командного файла


В этом примере после выполнения команды GOTO ххх выполнение командного файла про-

' должается со строки, следующей за меткой ххх, т.е. со строки


REM продолжение выполнения командного файла


'!Х"'! ^ KOMQH/IHOM файле


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

не выполнять команды в командном файле.


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


Примеры


for %х in (список) do команда


x Ч любой символ (кроме 0-9, чтобы не было смешения с параметрами командных


файлов %0-%9);

список Ч одно или несколько имен файлов, разделенных пробелами. В именах файлов


можно использовать символы * и ? ;


команда Ч любая программа или команда DOS, кроме команды For. Если в команде

употреблено %х, то оно заменяется именами файлов из списка.


При использовании команды For в командном файле вместо %х надо указывать %°/оХ

(см. примеры ниже).


При вызове из командной строки DOS:


for Не In (".asm) do rnasm He Ч для всех файлов из текущего каталога с расширением


.ASM вызвать макроассемблер M.ASM:


for Xf In (*.pas ".exe) do fc Xf a:)(fЧ сравнить файлы с расширениями .PAS и .EXE


из текущего каталога с такими же файлами на диске А: :


for He In (1 2 3456789 0) do copy He*.* d: Ч копировать все файлы из текущего


каталога с именами, начинающимися с цифры, в текущий каталог диска D: .


В командном файле те же примеры надо было бы записать так:


for ИКС In (i.asm) do masro Ис

for Hf In (*.pas i.exe) do fc Hf a:Uf

for хне In (1 2 3456789 0) do copy Ис*.* d:


При наличии на диске длинных имен файлов или каталогов, сгенерированных в

Windows 95 или Windows NT, команда for по умолчанию не будет замечать эти имена,

а будет видеть (и выдавать) только соответствующие короткие имена. Однако в MS

DOS 7.0 Вы можете переключить команду for на работу с длинными именами. Для

этого перед командой for надо выдать команду LFNFOR ON. Для возврата к работе с

короткими именами можно выдать команду LFNFOR OFF .


Пример


Ч-Х ^ХХХ Х ^.^.<И^и


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

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


Любая строка командного файла, начинающаяся с двоеточия ":", воспринимается при

обработке командного файла как метка. Имя метки определяется набором символов,

следующих за двоеточием до первого пробела или конца строки (остаток строки после

первого пробела игнорируется).


Для того чтобы указать командному процессору DOS, что требуется продолжить вы-

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

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


GOTO метка


Если метка в команде GOTO не указана или не найдена в командном файле, то

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


GOTO ххх


: ххх

НЕМ продолжение выполнения командного файла


В этом примере после выполнения команды GOTO ххх выполнение командного файла про-

должается со строки, следующей за меткой ххх, т.е. со строки


REM продолжение выполнения командного файла


Х.f^h.i -. /<{"\.1пн/1ном файле


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

не выполнять команды в командном файле.


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


Параметры


Пример


команда Ч это любая допустимая команда (в том числе GOTO). Эта команда выпол-

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

руется;

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


ERRORLEVEL число Ч условие истинно тогда, когда код завершения предыдущей

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

устанавливается программами при окончании их работы, по умолчанию этот код

равен нулю);


строка1 == строка2 Ч условие истинно тогда, когда строка 1 и строка2 полностью

совпадают. Если в этих строках имеются символы %0 Ч %9, то вместо этих сим-

волов подставляются параметры командного файла;


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

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


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

ТУР имя-файла . Мы будем проверять, задан ли при вызове параметр и существует ли ука-

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

номера строк файла):


echo off


if Ч%1 == ~ goto no_param

if not exist %~\ goto not_exist

type %1

goto exit

: no_param:


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

goto exit

: not_exist


echo Файл %~\ не найден

: exit


(1)


(2)


(3)


(4)


(5)


(6)


(7)


(8)


(9)


(10)


(11)


Сравнение с пустой

строкой


В строке 2 проверяется, что параметр командного файла задан. Если параметр не задан, то

происходит переход на метку no_param, выдается сообщение: "Должен быть задан пара-

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


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

то выдается сообщение "Файл .... не найден" (.... Ч параметр, заданный в команде TYP), и

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


Замечание. Среди программ DOS ненулевые коды возврата (которые могут быть

проверены с помощью команды IF ERRORLEVEL ...) могут устанавливать программы

CnkDsk, Choice, Defrag, Deltree, DiskComp, DiskCopy, Find, Format, KeyB, Move, MSAV,

Replace, Restore, ScanoTsk, SetVer и XCopy.


Следует заметить, что при сравнении строк, содержащих символы параметров %0 Ч

%9, следует проявлять осторожность. Например, сравнение второго параметра команд-

ного файла со строкой SSS не следует делать так: If Х2 == SSS . . . Дело в том, что

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

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

If SSS == 112 .. ., так как в этом случае, если в командном файле меньше двух пара-

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

так: If -Х2 == -SSS . . . Оно годится в любом случае.


32. 12. Создание диалоговых командных файлов


Фирмц 1 вызова

Параметры


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

теля. Это можно сделать с помощью программы Choice (она содержится в MS DOS,

начиная с версии 6.0).


CHOICE {JC'.cnucoK-символов^ {f^'.cuм.вoл,чucлo-ceкунд') сообщение


/С:список-символов Ч указывает допустимые символы, которые может ввести

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

символы Ч это Y и N ;


/Т:символ,число-сек.унд Ч если этот параметр указан, то в случае, когда пользователь

по истечении заданного параметром число-секунд времени не нажал ни на одну

клавишу, то принимается ответ символ ,

сообщение Ч указывает сообщение, выводимое на экран.


З.чмячания. 1. Если Вы желаете, чтобы при вводе символов различались прописные и

строчные буквы, укажите в команде параметр /S .


2. Обычно к сообщению добавляется список допустимых для ответа символов (через

запятую в квадратных скобках) и знак вопроса. Если Вы не хотите, чтобы к сообщению

выводится такой "довесок", укажите в команде параметр /N .


! 3. Использование параметра /Т удобно в файле AUTOEXEC.BAT, чтобы не заставлять

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


s 4. Если в сообщении имеются символы "/", то его следует заключить в кавычки.


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

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

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

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

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


Пример i CHOICE /C:YN "Запустить программу ALFA 7" Чпри ответе (N] значение переменной


1 ERRORLEVEL устанавливается равным 2, при ответе (Т) Ч равным 1.


. . . , . Покажем, как может использоваться значение этой переменной. В приведенном ниже


примере осуществляется выбор одной из трех игр: DIGGER, TETRIS и CAT.


.. . , . echo off

'..'ХХ--.. ._..'.:..:.. echo Выберите желаемую игру: D - DIGGER. Т - TETRIS. С - CAT


choice /c:DTC "Введите D, Т или С : "

if errorlevel 3 goto cat

if errorlevel 2 goto tetris

digger

goto exit


tetris

tetris

goto exit

: cat

cat

: exit


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

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

тем Ч на следующее по убыванию и т.д.