Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Dos7book

.pdf
Скачиваний:
96
Добавлен:
09.02.2015
Размер:
5.1 Mб
Скачать

Глава 6: Избранные программы для MS-DOS7

Примечание 1: у сжатых файлов из комплектов поставки операционных систем Windows-2000\XP последняя буква суффикса также заменена на знак подчеркивания, но они сформированы посредством иного алгоритма сжатия. Для их распаковки в среде MS-DOS7 следует использовать программу EXTRACT.EXE (6.11).

6.11EXTRACT.EXE – распаковщик сжатых файлов

Программа EXTRACT.EXE распаковывает файлы, сжатые программой MAKECAB.EXE. Фирма Microsoft использует этот алгоритм для сжатия одиночных файлов в поставках операционных систем Windows-2000/XP, а также для компоновки больших многотомных сжатых файлов с суффиксом *.CAB в поставках операционных систем Windows-95/98/ME. Помимо собственно распаковки, программа EXTRACT.EXE позволяет просматривать перечень содержащихся в поставке файлов, а также извлекать отдельные файлы из сжатых файлов с суффиксом *.CAB. Вот пример использования программы EXTRACT.EXE для просмотра содержания многотомной поставки:

EXTRACT.EXE /A /D E:\Win95\OSR2.PE\Win95_21.cab > C:\Temp\List.txt

здесь:

E:\Win95\OSR2.PE\

пример пути к одному из CAB-файлов из поставки

 

операционной системы Windows-95. Если путь не указывать, то

 

поиск файла будет производиться только в текущем каталоге.

/D

необязательный параметр, вызывающий выведение таблицы

 

содержания CAB-файла без его распаковки.

/A

необязательный параметр, вызывающий продолжение

 

исполнения

той же операции по отношению ко всем

последующим CAB-файлам из той же поставки. В данном случае это означает, что будет выведено содержание CAB-файлов с

21-го по 26-й.

Как правило, в CAB-файлах содержится в сжатом виде множество исходных файлов, список содержания получается весьма длинным, внимательно просмотреть его в процессе вывода на экран фактически невозможно. Поэтому в приведенном выше примере выводимый список перенаправлен в файл List.txt в каталоге C:\Temp. Потом файл List.txt можно спокойно посмотреть с помощью программы просмотра (например, MORE.COM, 6.19) или текстового редактора.

Вот другой пример использования программы EXTRACT.EXE для извлечения нужного файла (в данном случае – Msvcrt40.dll) из сжатого CAB-файла, входящего в комплект поставки операционной системы, причем когда заранее неизвестно, в каком именно CAB-файле содержится подлежащий извлечению файл:

– 201 –

Глава 6: Избранные программы для MS-DOS7

EXTRACT.EXE /A /Y /L C:\Windows\System Win95_02.cab Msvcrt40.dll

здесь:

/Y

необязательный параметр, позволяющий перезаписать без

 

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

 

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

/L

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

 

далее путь (C:\Windows\System) следует считать путем к каталогу

 

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

 

параметр /L не указан, распаковываемый файл по умолчанию

 

помещается в текущий каталог.

После спецификации пути к каталогу назначения в подобных командных строках может быть указано несколько имен файлов, причем первое из них относится к CAB-файлу, начиная с которого должен производиться поиск, а все последующие интерпретируются как имена файлов, которые надлежит извлечь и распаковать. При исполнении показанной выше командной строки начнется процедура поиска подлежащего извлечению файла в сжатых CAB-файлах с 02-го по 26-й. Искомый файл будет обнаружен в 13-м томе поставки, распакован и помещен в каталог C:\WINDOWS\SYSTEM, затерев при этом имевшуюся там прежнюю версию файла. Такие процедуры распаковки занимают гораздо меньше времени, чем полная распаковка поставки операционной системы, и часто используются для замещения поврежденных системных файлов.

Программа EXTRACT.EXE не позволяет использовать в именах файлов знаки подстановки (2.01-03), но принимает еще один необязательный параметр /E , который вызывает распаковку всех файлов, содержащихся в указанном сжатом файле. При этом конкретное имя извлекаемого файла указывать уже не нужно. Параметр /E целесообразно применять по отношению к одиночным сжатым файлам из поставки Windows-2000/XP (у которых последняя буква суффикса заменена знаком подчеркивания). Но полная распаковка больших CAB-файлов в среде MS-DOS выполняется медленно. Особенно осторожно следует относиться к совместному использованию параметров /A и /E, потому что это может повлечь за собой распаковку большой группы сжатых CAB-файлов, требующую много времени и значительного объема дискового пространства.

Примечание 1: некоторые поставщики программного обеспечения используют суффикс *.CAB в именах файлов, сжатых посредством других алгоритмов. Кроме того, существует несколько взаимно несовместимых версий программы EXTRACT.EXE. В любом случае для распаковки CAB-файлов из поставки программного

обеспечения с наибольшей вероятностью подойдет именно та программа EXTRACT.EXE, которая может содержаться в составе той же поставки.

– 202 –

Глава 6: Избранные программы для MS-DOS7

6.12FC.EXE – сопоставление файлов

Программа FC.EXE позволяет сопоставлять файлы в бинарном и в текстовом режимах. Бинарный режим сопоставления целесообразно использовать для

нахождения отдельных несовпадающих байтов в почти одинаковых исполняемых файлах. FC.EXE показывает каждую несовпадающую пару байтов из сопоставляемых файлов вместе с их смещением относительно начала файла. Вот пример вызова программы FC.EXE для сопоставления файлов в бинарном режиме:

FC.EXE /B Trial2.com D:\Temp\Trial1.com

здесь:

/B

параметр, задающий сопоставление в бинарном режиме

Trial2.com – пример

спецификации первого сопоставляемого файла.

 

Поскольку перед его именем не указан путь, предполагается

 

наличие этого файла в текущем каталоге.

D:\Temp\Trial1.com

пример спецификации второго сопоставляемого

файла с указанием полного пути.

Бинарный режим сопоставления не предполагает поиска соответствий во взаимно смещенных последовательностях байтов.

В текстовом режиме сопоставления FC.EXE сравнивает файлы строка за строкой и показывает рядом несовпадающие строки. Когда порядок соответствия между последовательностями строк нарушается, FC.EXE способен его восстановить посредством поиска групп совпадающих строк. Условия сопоставления и поиска соответствий определяются необязательными параметрами, задаваемыми в командной строке, например:

FC.EXE /A /C /L /LB9 /N /T /W /1 A:\Config.sys C:\Config.sys

здесь:

/A

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

 

группы несовпадающих строк

/C

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

 

первой половине таблицы кода ASCII, до знака 127).

/L

сопоставлять файлы в текстовом режиме, как текст в коде ASCII.

/LB9

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

 

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

 

протяженность этой зоны составляет 100 строк.

/N

показывать номера строк

/T

не преобразовывать код табуляции 09h в последовательность

 

пробелов.

– 203 –

Глава 6: Избранные программы для MS-DOS7

/W

сжать пустое пространство строки, выражаемое знаками

 

 

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

 

 

сопоставлении.

/1

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

 

 

можно было бы считать, что совпадение снова найдено.

Примечание 1: бинарный режим сопоставления устанавливается по умолчанию для файлов, имена которых имеют суффиксы BIN, COM, EXE, LIB, OBJ, SYS. Все остальные файлы по умолчанию сопоставляются в текстовом режиме.

Примечание 2: в специальных случаях допускается замена одного или обоих имен файлов зарезервированными именами устройств: NUL, CON и т.д. (2.01-01). В частности, указание устройства CON (консоли) вместо

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

6.13FDISK.EXE – разметка разделов диска

Диски, знакомые нам по буквенным обозначениям, принято называть логическими дисками. В отличие от них, физические накопители на жестких магнитных дисках буквами не обозначают. Там физическое записываемое пространство может быть представлено состоящим из нескольких разделов, каждому из которых поставлен в соответствие отдельный логический диск. Для разметки структуры разделов на жестких магнитных дисках в составе MS-DOS7 имеется программа FDISK.EXE.

Когда программу FDISK.EXE запускают на исполнение без параметров, она прежде всего запрашивает пользователя, нужно ли вводить поддержку дисков большого объема или нет. Отказ будет означать, что новые разделы объемом от 512 до 2048 Мбайт будут маркированы для последующего форматирования согласно файловой системе FAT-16. Принятие предложения о поддержке дисков большого объема означает, что предпочтение будет отдано файловой системе FAT-32. Для разделов, размер которых выходит за указанные выше границы, маркировка разделов выполняется по умолчанию: FAT-32 принимается для разделов свыше 2048 Мбайт, FAT-16для разделов от 16 до 512 Мбайт, FAT-12для разделов, емкость которых не превышает 16 Мбайт.

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

FDISK.EXE /fprmt /actok

Параметр /fprmt предоставляет пользователю самому выбирать тип файловой системы, устраняет разговоры о поддержке дисков большого объема и сразу

– 204 –

Глава 6: Избранные программы для MS-DOS7

выводит на экран меню выбора операции: показать, создать, удалить раздел или сделать его загрузочным (активным). Параметр /actok позволяет создать загрузочный раздел на любом физическом диске (а не только на первом). Пользователь получает возможность составлять структуру разделов диска, но эта структура не записывается на диск сразу. Программа FDISK.EXE дает шанс вернуться к меню для корректирования построенной структуры. Если с размечаемого жесткого магнитного диска предстоит загружать компьютер, то важно не забыть, что один из разделов должен быть сделан загрузочным. После этого можно завершить сеанс работы с программой FDISK.EXE.

Если в ходе сеанса структура разделов была изменена, то программа FDISK.EXE записывает изменения на диск и выводит компьютер в перезагрузку, чтобы внесенные измерения были бы зарегистрированы системой BIOS компьютера. При регистрации разделов системой BIOS им присваиваются буквенные обозначения логических дисков, после чего эти логические диски можно форматировать программой FORMAT.COM (6.15). Только после форматирования новые логические диски становятся доступны для использования.

Помимо описанного интерактивного составления структуры разделов, программа FDISK.EXE способна выполнять отдельные операции, задаваемые параметрами в командной строке:

FDISK.EXE /? FDISK.EXE /status

FDISK.EXE /mbr

FDISK.EXE /cmbr 2

показать краткую справку.

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

записать или перезаписать MBR (master boot record = главную загрузочную запись) на физическом дисководе номер 1, оставляя структуру разделов без изменений (примечание 1). Подтверждающее сообщение о перезаписи не выдается.

записать или перезаписать MBR на физическом дисководе, номер которого указан после параметра /cmbr .В данном случае указан номер 2, допускаются 1, 2, 3 и т.д., если, конечно, эти дисководы в компьютере имеются. Подтверждающее сообщение о перезаписи не выдается.

При любом варианте использования программы FDISK.EXE в командной строке может быть дополнительно указан параметр /X – не применять функции расширенной поддержки доступа к жестким магнитным дискам. Параметр /X следует указывать тогда, когда обычные попытки разметки диска заканчиваются неудачно: диск либо не опознается, либо оказывается недоступен, либо попытка доступа ведет к зависанию компьютера с сообщением "stack overflow" (=

– 205 –

Глава 6: Избранные программы для MS-DOS7

переполнение стека). Такое бывает из-за отказов аппаратуры, из-за неправильного конфигурирования, из-за заражения служебных областей диска компьютерным вирусом. Не всегда, но в некоторых подобных ситуациях указание параметра /X может помочь.

Программа FDISK.EXE способна также осуществлять разметку дисководов на жестких магнитных дисках в автоматическом режиме. Это удобно, когда требуется подготовить к работе несколько компьютеров с одинаковыми новыми дисководами. Вот пример командной строки для выполнения автоматической разметки:

Fdisk.exe 1 /PRI:2000 /EXT:8000 /LOG:8000 /Q

здесь:

 

 

1

номер адресуемого физического дисковода на жестких

 

 

магнитных дисках (1, 2, ...).

/PRI:2000

разметить первичный раздел, в частности, объемом 2000

 

 

Мбайт. Если требуется маркировать этот раздел под файловую

 

 

систему FAT-16, то вместо параметра /PRI: следует указывать

 

 

/PRIO:.

/EXT:8000

разметить расширенный раздел, в частности, объемом

 

 

8000 Мбайт.

/LOG:8000

разметить логический диск объемом, в частности, 8000

 

 

Мбайт, внутри расширенного раздела. Когда размер логического

 

 

диска не превышает 2000 Мбайт, и требуется маркировать этот

 

 

логический диск под файловую систему FAT-16, то вместо

 

 

параметра /LOG: следует указывать параметр /LOGO:.

/Q

– "quiet" – необязательный параметр, исключающий выведение на

 

 

экран сообщений при проведении разметки диска в

 

 

автоматическом режиме.

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

Примечание 1: перезапись MBR устраняет возможные повреждения, в том числе вызываемые компьютерными вирусами, но вместе с тем следует иметь ввиду, что специфичные варианты MBR иногда используются намеренно. Так действуют, например, система DDO (Dynamic Disk Overlay) фирмы OnTrack, а также многие менеджеры загрузки операционных систем. Если такие средства установлены, то вместо программы FDISK.EXE надо использовать процедуры восстановления нестандартных записей MBR (пример показан в разделе 9.02-03).

Примечание 2: программе FDISK.EXE фирмы Microsoft присущ ряд существенных ограничений. Она не позволяет резервировать дисковое пространство посредством не-последовательного расположения

– 206 –

Глава 6: Избранные программы для MS-DOS7

разделов. Она неправильно размечает разделы, переходящие через границу 8.4 Гбайт от начала дискового пространства. Кроме того, она не всегда правильно опознает разделы, созданные другими операционными системами: иногда не позволяет их удалить, а иногда располагает новые разделы "поверх" неверно опознанных. В

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

Примечание 3: наиболее серьезные недостатки оригинальной программы FDISK.EXE фирмы Microsoft исправлены в новой неофициальной версии (2006-го года), которую можно скачать с сайта http://radified.com/Files/FDISK.EXE . Кроме того, еще одна одноименная программа была заново написана Б.Е.Райфснайдером

(Brian E. Reifsnyder). Версию 1.30 этой программы (2003-го года) можно скачать с сервера ftp://ftp.uni-koeln.de/pc/msdos/diskutils/ в

составе архива FDISK130.ZIP.

Примечание 4: при любом изменении структуры разделов диска посредством программы FDISK.EXE или ее аналогов нельзя избежать полной потери данных в тех разделах, которые это изменение затрагивает. Переразметка разделов диска с сохранением данных возможна, но для этого требуются более мощные средства, например, программа

Partition Magic фирмы PowerQuest.

Примечание 5: с помощью программы FDISK.EXE или ее аналогов нельзя выполнять разметку дисков, доступ к которым осуществляется по сети или посредством устанавливаемых драйверов. По этой причине нередко не поддаются разметке, в частности, сменные диски с интерфейсом SCSI и карты памяти с интерфейсом USB. В

таких случаях могут оказаться полезными другие программы разметки дисков, например, BTFDISK.EXE фирмы Buslogic или TFDISK.EXE фирмы Tekram. Обе эти программы можно скачать с сайта http://www.neuron.alt.ru/drivers/Driver/Controllers/ из подкаталога BUSLOGIC в составе самораспаковывающегося файла архива DOSASPI.EXE и из подкаталога TEKRAM в составе файла архива DC390FBW.ZIP.

6.14FIND.EXE – поиск слов в файлах

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

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

– 207 –

Глава 6: Избранные программы для MS-DOS7

экране. Вот типичный пример использования программы FIND.EXE по ее прямому назначению:

FIND /N /I " INT 13 " C:\DOS\SRV\Drives.txt

здесь:

/N

необязательный параметр, вызывающий выведение порядковых

 

номеров отображаемых строк.

/I

необязательный параметр, заставляющий при сопоставлении

 

игнорировать различие строчных и заглавных букв.

" INT

13 "

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

 

в двойные кавычки. Обратите внимание на пробелы между

 

кавычками и словами искомой группы: благодаря этим пробелам

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

C:\DOS\SRV\Drives.txt – пример файла, строки которого надлежит анализировать. Имени файла предшествует полный путь. Если путь не указан, то поиск файла будет производиться только в текущем каталоге. Допускается указывать последовательно

несколько имен анализируемых файлов или заменять имя маской файла с использованием знаков подстановки (2.01-03).

В результате исполнения показанной командной строки на экран будут выведены все строки анализируемого файла, которые содержат слова INT 13, вместе с кратким напоминанием о том, из какого файла эти строки выделены. Перед строками будет указан их номер, который поможет их находить в исходном файле. Если вы ожидаете, что число выводимых строк будет велико, то удобнее выводить строки в файл посредством перенаправления вывода (2.04-03) или воспользоваться утилитой просмотра MORE.COM (6.19).

Закончив поиск, программа FIND.EXE оставляет код ошибки (errorlevel) 0, если ей удалось найти хотя бы одну строку, содержащую искомую группу слов, или код ошибки 1, если ни одной такой строки найти не удалось. Определить результативность поиска по коду ошибки можно так же, как показано на примерах в разделах 3.15-03 и 6.03.

Другой менее типичный пример использования программы FIND.EXE – это подсчет полного числа строк в тексте:

FIND.EXE /V /C "" < Draft.txt

здесь:

/V

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

 

 

которые не содержат указанную в кавычках группу слов.

/C

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

 

 

подсчета числа найденных строк, но не самих строк.

– 208 –

Глава 6: Избранные программы для MS-DOS7

""пустая спецификация группы слов, которые надлежит искать.

< Draft.txt

пример посылки анализируемого текстового файла

 

программе FIND.EXE через перенаправление ввода (2.04-02).

 

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

 

наличие этого файла в текущем каталоге. При получении потока

 

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

 

программа FIND.EXE не добавляет упоминание об

 

анализируемом файле к выводимому на экран результату.

Пустая спецификация искомой группы слов в показанном выше втором примере рассматривается программой FIND.EXE как специальный несуществующий объект. Поэтому программа FIND.EXE будет просто считать все строки, включая пустые строки. После такого подсчета числа строк программа FIND.EXE всегда возвращает код ошибки 0.

Третий пример применения программы FIND.EXE представляет собой часть batch-файла. Предположим, что в ходе исполнения получен от пользователя и записан в переменную окружения %P% путь к каталогу назначения, но неизвестно, заканчивается ли этот путь знаком обратной косой черты или нет. Если его нет, то его необходимо добавить, но если он уже имеется, то добавлять нельзя. Данную задачку можно решить следующим образом:

echo %P%\\ | Find.exe "\\\" > nul if errorlevel 1 set P=%P%\

В первой строке программа FIND.EXE получает через промежуточное перенаправление значение переменной %P%, дополненное еще двумя знаками обратной косой черты. Искомый объект, представленный в кавычках тремя знаками обратной косой черты подряд, будет найден только в том случае, если один знак обратной косой черты в конце значения переменной уже был указан. Сообщение, выводимое программой FIND.EXE, не представляет интереса и потому перенаправляется в NUL (т.е. "в никуда"). Результат становится известен через оставляемый программой FIND.EXE код ошибки (errorlevel), который анализируется во второй строке показанного выше примера. Код ошибки 1 означает, что программа FIND.EXE не нашла в анализируемом потоке данных искомой последовательности знаков, и только тогда команда SET добавит к концу спецификации пути недостающий знак обратной косой черты.

Последний (четвертый) пример пользования программой FIND.EXE также представляет собой часть batch-файла. Предположим, что активизирована процедура подготовки списка файлов, которые надлежит сохранить в упакованном архиве, и при этом требуется избежать повторной упаковки, когда в подготовленном списке нет ничего, кроме упакованных архивных файлов того же вида (например, с суффиксом RAR). Проверить подготовленный список файлов %Temp%\Files.lst можно следующим образом:

– 209 –

Глава 6: Избранные программы для MS-DOS7

FIND /C /I /V ".rar" < %Temp%\Files.lst | FIND ": 0" > nul

if not errorlevel 1 echo Chosen file(s) – already RAR-archive(s) if not errorlevel 1 goto NO_PACK

В первой строке программа FIND.EXE вызывается дважды. В первый раз она

получает через перенаправление ввода строки подготовленного списка и считает только те строки, в которых нет суффикса ".RAR". Результат подсчета строк посредством промежуточного перенаправления записывается во временный файл. Затем программа FIND.EXE вызывается второй раз и запрашивает данные для анализа из перенаправления, то есть из уже подготовленного временного файла, куда записан результат подсчета числа строк. Если результат подсчета нулевой, то обнаруживается цифра 0, и возвращаемый код ошибки устанавливается в 0. Последние две строки регистрируют нулевое значение кода ошибки, выводят на экран соответствующее сообщение и выполняют переход, исключающий повторное исполнение упаковки.

6.15FORMAT.COM – форматирование дисков

Программа FORMAT.COM формирует логические диски на носителях записи, в том числе на дискетах и в разделах жестких магнитных дисков. Форматирование включает проверку пригодности секторов диска для записи, формирование служебных заголовков секторов и загрузочного сектора (boot-сектора), создание таблицы размещения файлов (FAT) и корневого каталога. Кластеры, в которых обнаруживаются непригодные для записи секторы, маркируются в таблице FAT как плохие (BAD), и благодаря тому потом не используются. На дисках объемом от 16 Мбайт и ниже формируется файловая система FAT-12. Для разделов жестких магнитных дисков программа FORMAT.COM выбирает файловую систему (FAT-16 или FAT-32) смотря по тому, какой идентификатор файловой системы (A.13-6) приписан данному разделу в MBR программой FDISK.EXE (6.13). Размер

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

Форматирование гибких магнитных дисков (дискет) включает низкоуровневую рекалибровку дорожек, так что фактическая емкость дискеты в результате форматирования может быть изменена. Вот пример пользования программой FORMAT.COM для форматирования дискеты:

FORMAT A: /V:Archives /Q /F:1.44 /B

здесь:

A: – пример обязательной спецификации буквенного обозначения дисковода или логического диска, подлежащего форматированию. Это обозначение должно быть назначено системой BIOS при включении компьютера. Буквенные

– 210 –

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]