Фигурнов В.Э. IBM PC для пользователя. Книга содержит подробное и доступное для начинающих описание возмож
Скачать 5.4 Mb.
|
Глава 33. Работа с архивными файлами в DOS Примеры Присвоение другого имени извлекаемому файлу pkunzip a:archive -о Ч извлечение всех файлов из архива A:ARCHIVE.ZIP и помещение их в текущий каталог. Файлы на диске с тем же именем затираются без предупрежде- ний; arj е a:archive Чjyo d:\ Ч извлечение всех файлов из архива A:ARCHIVE.ARJ в корневой каталог диска D:. Файлы на диске с тем же именем затираются без предупреждений: pkunzip a:archive Чп Ч извлечение файлов из архива A:ARCHIVE.ZIP в текущий ката- лог. Если на диске имеется файл с тем же именем, что и в архиве, то файлы на диске с более ранней датой последней модификации затираются без предупреждения, а фай- лы с той же или более поздней датой остаются без изменений (извлечение соот- ветствующих файлов из архива не производится): arj е Чи a:archive с: Ч извлечение файлов из архива A:ARCHIVE.ARJ в текущий каталог на диске С:. Файлы на диске с такой же или более поздней датой последней модифи- кации не изменяются (извлечение соответствующих файлов из архива не производит- ся), а для файлов на диске с более ранней датой, чем у соответствующего файла в ар- хиве, выводится запрос о том, надо ли его затирать; pkunzip a:archive Чf Ч обновление из архива A:ARCHIVE.ZIP версий файла из текущего каталога. Из архива извлекаются только более свежие версии тех файлов, которые уже имеются в текущем каталоге. Никаких запросов при этом на экран не выводится, старые версии файлов затираются без предупреждения; arj е Чп a:archive с: Ч извлечение новых файлов из архива A:ARCHIVE.ARJ в текущий каталог на диске С:. Если для какого-либо файла из архива в текущем каталоге диска С: уже есть файл с таким именем, то этот файл из архива не выводится (даже если файл на диске старее его). Программа ARJ предоставляет еще один способ обработки конфликтов имен при из- влечении файлов из архива. При указании режима -М2 программа ARJ при наличии на диске файла с тем же именем, что у извлекаемого из архива файла, присваивает извлекаемому из архива файлу другое имя. Для этого она устанавливает у данного файла расширение .000 (если такой файл тоже существует, то .001 и т.д.). 33.7. Архивация файлов из подкаталогов Извлечение файлов в подкаталоги Очень удобной возможностью программ PKZIP и ARJ является архивация (упаковка) файлов из подкаталогов указанного каталога. Эта возможность задается с помощью указания следующих режимов: PKZIP Ч режим -гр ARJ Ч режим -г При указании этих режимов программы архивации ищут архивируемые файлы не только в каталогах, указанных в команде, но и во всех подкаталогах этих каталогов. Здесь под термином "все подкаталоги" понимаются не только под- каталоги, непосредственно входящие в указанные каталоги (т.е. подкаталоги первого уровня), но и подкаталоги этих подкаталогов (т.е. подкаталоги вто- рого уровня), и т.д., т.е. подкаталоги всех уровней вложенности. При этом в архиве сохраняется информация о пути к архивированным файлам. При извлечении файлов из архива можно выводить файлы не в один каталог, а в соответствующие подкаталоги указанного в команде каталога (если такие подкаталоги не существуют, то они создаются). Для этого при извлечении файлов необходимо для программы ARJ использовать команду Х (а не Е), а для программы PKUNZIP Ч режим -D. Замечание. Программы PKZIP и ARJ по-разному записывают в архиве пути к архивируе- мым файлам, если в команде запрошена архивация файлов не из текущего каталога. На- пример, при выполнении команд pkzip -гр a:archive c:\doc\*.* arj -r a:archive c:\doc\*.* для файла C:\DOC\TEST.TXT программами архивации будут запомнены следующие пути: PKZIP ARJ TEST.TXT DOC\TEST.TXT Чтобы не запутаться, целесообразно при архивации файлов из всех подкаталогов некоторо- го каталога сделать этот каталог текущим. Пусть, например, дерево каталогов на диске С: имеет следующий вид: Часть 7. DOS для опытного пользователя LETTERS iЧ ARCHIVE PAPERS ЧL- DRAFT Корневой каталог Если текущий каталог Ч \DOC, то при выполнении команд pkzip Чи Чгр a: doc ".txt arj u Чr a: doc *.txt в архивы A:DOC.ZIP и A:DOC.ARJ будут добавляться файлы с расширением имени .TXT из каталогов: C:\DOC С: \DOC\LETTERS C:\DOC\PAPERS С: \DOC\PAPERS\ARCHIVE С: \DOC\PAPERS\DRAFT При этом в архивные файлы будут записываться пути к исходным файлам от каталога C:\DOC. Если выполнить любую из команд pkunzip a:\archi.ve c:\user\ arj e a:\archive c:\user\ то все файлы из каталогов C:\DOC, C:\DOC\LETTERS, C:\DOC\PAPERS, C:\DOC\PAPERS\ARCHIVE и C:\DOC\PAPERS\DRAFT будут извлечены в каталог C:\USER. Таким образом, файлы из разных каталогов будут "свалены в одну кучу". Заметим, что если бы каталога C:\USER не существовало, программа PKUNZIP отказалась бы ра- ботать, а программа ARJ выдала бы запрос на создание нового каталога. А если выполнить любую из команд pkunzip Чd a:\archive c:\work\ arj x a:\archive c:\work\ то на диске С: будет создан каталог C:\WORK и сохраненные в архиве файлы будут извлечены в соответствующие подкаталоги этого каталога. Таким образом, структура каталогов на диске С: будет следующей IЧ LETTERS г- ARCHIVE PAPERS Ч1Ч DRAFT Корневой каталог Ч USER LETTERS г- ARCHIVE PAPERS ЧL DRAFT В каталоге WORK будут находиться копии файлов из каталога DOC, а в подкаталогах LETTERS, PAPERS, ARCHIVE и DRAFT каталога WORK Ч копии файлов из соответ- ствующих подкаталогов каталога DOC. Замечание. Программа ARJ перед созданием каждого каталога выводит запрос "Create directory? [Y/N/A/Q]". На этот вопрос целесообразно ответить [А] Ч (Always, т.е. все- гда). А еще лучше при вызове программы ARJ задать режим -JYC, чтобы этот запрос во- обще не выводился. 33.8. Просмотр оглавления архива Одним из наиболее часто используемых режимов программ архивации явля- ется, естественно, просмотр оглавления архива. С помощью функций про- смотра оглавления архива можно узнать, какие файлы содержатся в архиве и получить подробную информацию об этих файлах: в каком каталоге на диске находился файл, каковы дата и время последней модификации файла, каков размер файла на диске и в архиве и т.д. Формат команд Обычно для просмотра оглавления архива можно использовать следующие команды: Глава 33. Работа с архивными файлами в DOS PKUNZIP ARJ -V L имя-архива имя-архива Замена-файлов)... Замена-файлов)... Примеры Приостановка выдачи результатов Пожранный вывод Х оглавления Примеры Здесь имя-apxuea задает имя архива, откуда извлекаются файлы. Если расши- рение у имени архивного файла не указано, подразумевается .ZIP для про- граммы PKUNZIP и ARJ Ч для программы ARJ. В имени архива можно упот- реблять символы * и?Чв этом случае обрабатывается несколько архивных файлов. Имена-файлов указывают, для каких файлов из архива требуется вывести информацию. При задании имен файлов можно использовать симво- лы* и?. По умолчанию подразумеваются все файлы, имеющиеся в архиве. pkunzip a:\archive -v Ч вывод информации о файлах в архиве A:\ARCHIVE.ZIP; arj I * ".txt Ч вывод информации о файлах с расширением .ТХТ из всех архивных файлов типа .ARJ из текущего каталога. После ввода команды программы начинают выдачу результатов на экран. Вывод инфор- мации можно приостановить нажатием комбинации клавиш ГсТ?Г)Г^). Повторное нажа- тие j^Ctrllpr) возобновит вывод на экран. Завершить работу программы можно, нажав CCTTDIT). Однако для архивных файлов, содержащих большое количество файлов, оглавление может быть выдано на экран настолько быстро, что Вы не успеете его прочесть или нажать [Ctrl)n-D. Поэтому целесообразно использовать поэкранный вывод оглавления архива. Для программы ARJ поэкранный вывод оглавления обеспечивается указанием режимов -JP -JYY. В этом случае после заполнения экрана строками файла в нижней строке экрана выводится сообщение "More", и Вы можете нажать следующие клавиши: Q) или (Enter] Ч вывести следующий экран; QQ Ч окончить вывод данного файла; СА) Ч продолжить вывод данного файла без пауз: (0]Ч прекратить вывод файлов на экран. Для программы PKUNZIP можно использовать средства перенаправления ввода-вывода DOS, например: PKUNZIP -V имя-архива {амена-файлов)... \ MORE В этом случае оглавление архива будет записано во временный файл на диске, а затем поэкранно выведено программой MORE. Для выдачи очередного экрана надо нажимать любую клавишу, для окончания вывода Ч (Ctrl](T). arj I archive Чjp Чjyy Ч поэкранный вывод оглавления архива ARCHIVE.ARJ из текущего pkunzip Чv a:\myzip AAMYZIP.ZIP. каталога: р Чv a:\myzip ; more Ч поэкранный вывод информации о файлах в архиве Сортировка информации о файлах Выдача оглавления в файл или на принтер Формат выдачи оглавления Программа PKUNZIP позволяет выводить оглавление архива в отсо- ртированном виде. Наиболее часто используется вывод оглавления в алфа- витном порядке. Для этого надо указать режим -VN, например, PKUNZIP A:\ARCHIVE -VN Ч вывод оглавления архива A:\ARCHIVE.ZIP. Оглавление упорядочено в алфавитном порядке имен файлов. Информацию о файлах, находящихся в архиве, можно вывести не на экран, а в файл или на принтер. Для этого следует в конце команды написать: > имя-файла Ч для вывода в файл; > PRN Ч для вывода на принтер. Формат выдачи оглавления у разных программ различается. Вот как выводят оглавление архива программы PKUNZIP: Searching ZIP: HELP.ZIP Length Method Size Ratio CRC-32 Attr 54 228252 346901 34881 465408 Stored A-Xtra A-Xtra A-Xtra A-Xtra 54 114051 179753 16751 212661 0% 51% 49% 52% 55% 22-01-91 16-01-91 11-06-91 01-06-90 16-01-91 16:46 16:18 00:00 01:10 16:23 8aa099b4 676b9463 ec660077 de2456a4 455a3fa3 --Хw- --w- --w- --w- DIRINFO DOS. H! DOS50. H! HELP. EXE TECH. H! 1075496 523270 52% В столбцах выведенной таблицы располагается следующая информация: Часть 7. DOS для опытного пользователя Length Method Size Ratio Date Time CRC-32 Attribute размер исходного файла; метод сжатия файла при помещении его в архив,- размер файла после сжатия; процент места в архиве, сохраненного благодаря сжатию файла: дата создания или последней модификации исходного файла; время создания или последней модификации исходного файла; код циклического контроля файла; атрибуты файла (s Ч системный, h Ч спрятанный, w Ч для чтения и записи, г Ч только для чтения, * Ч файл защищен паролем); имя файла. При использовании для вывода оглавления режима ЧVB (а не -V) сведения о коде циклического контроля и атрибутах файла не выводятся, что оставляет больше места для вывода имени файла. Программа ARJ выводит информацию об оглавлении архива совсем по- другому: Processing .archive: HELP.ARJ Archive dato : 1993-04-06 11:23:08 Fileriaine Original Coinpresscd Ratio DateTime modified CRC-32 AttrBTPMGVX DIRINFO DOS .H! DOS50.H' HELP. EXE TECH.H! 54 54 1. 000 91-01-22 16: 46: 06 8AA099B4 A--W В 0 228252 115218 0 505 91-01-16 16: 18: 48 676B9463 A--W В 1 346901 181720 0. 524 91-06-11 00: 00: 00 EC660077 A--W В 1 34881 16795 0. 481 90-06-01 01: 10: 26 DE2456A4 A--W В 1 465408 214717 0. 461 91-01-16 16: 23: 50 455A3FA3 A--W В 1 5 files 1075496 528504 0.491 Вывод информации о каталогах Примеры В столбцах этой таблицы располагается следующая информация: Filename Original Compressed Ratio DateTime CRC-32 Attr BTPMGVX имя файла; размер исходного файла; размер файла после сжатия; отношение размера файла в архиве к исходному размеру: дата и время создания или последней модификации исходного файла (дата выводится в формате ГГ-ММ-ДД); . код циклического контроля файла; атрибуты файла (А Ч файл надо архивировать, S Ч системный, Н Ч спрятанный, W Ч для чтения и записи, R Ч только для чтения): прочие сведения о файле: В Ч файл в архиве является устаревшей копией, Т Ч тип файла (В Ч двоичный, Т Ч текстовый, D Ч ката- лог), Р Ч в архиве имеются, сведения о пути к файлу, М Ч номер ме- тода сжатия для данного файла, G Ч файл в архиве зашифрован па- ролем, V Ч файл продолжается в следующем томе архива, Х Ч на- чало файла содержится в предыдущих томах архива. Программы PKZIP и ARJ позволяют запоминать в архивном файле сведения о каталогах, в которых располагались помещенные в архив файлы. Эти сведе- ния могут использоваться при извлечении файлов в нужные подкаталоги. Имя файла вместе с указанием пути к нему может быть достаточно длинным. Поэтому для вывода оглавления с выдачей сведений о каталогах предусмотре- ны специальные режимы: Х у программы ARJ Ч команда V (она отличается от команды L тем, что выдает ин- формацию о каждом файле в две строчки: в первой содержится имя файла с указа- нием пути к нему, а во второй Ч остальные сведения о файлах); Х у программы PKUNZIP Ч режим -VB (или -VNB). При этом на экран не выво- дятся сведения о коде циклического контроля и атрибутах файла, что оставляет больше места для вывода имени файла. Заметим, что программы PKZIP и PKUNZIP при выводе оглавления архива заменяют в именах файлов символ "\", разделя- ющий имена файлов и каталогов, на символ "/". pkunzip a:\archive Чvnb Ч вывод оглавления архива A:\ARCHIVE.ZIP. Оглавление упо- рядочено в алфавитном порядке имен файлов; код CRC и атрибуты файлов не выво- дятся, так что остается достаточно места для вывода путей к(райлам: arj v archive Чjp Чjyy Ч поэкранный вывод оглавления архива ARCHIVE.ARJ из текущего каталога. Информация о каждом файле из архива выводится в две строчки. 364 Часть 7. DOS для опытного пользователя Х повреждения из-за воздействия вирусов, неосторожных действий пользователей, неправильно работающих программ и т.д. 'i.ini.i Х!U!'1- В архивном файле содержится информация двух видов: упакованная информация поме- щенных в архив файлов и справочные сведения об этих файлах (оглавление архива). .чрхныоп Повреждения данных, принадлежащих какому-либо файлу, приводят только к невоз- можности восстановления этого файла. Но повреждение в оглавлении архива может привести к тому, что весь "остаток" архива будет использовать невозможно. il:)^Хi>^Х>^'^^"ll"Х! Х ^ЛiХ^ХХХ^.!-. i',i, 'lХ"l:^ Если данные какого-либо файла в архиве повреждены, то при просмотре оглавления архива никаких данных об ошибке выведено не будет. Это и не удивительно Ч при просмотре оглавления читается только оглавление архива, а не содержимое файлов. Но при проверке архива или извлечении файлов из архива программы PKUNZIP и ARJ вычисляют код циклического контроля для каждого файла и сообщают пользователю, если этот код не совпадает с записанным в оглавлении архива. Вот эти сообщения: PKUNZIP Ч Warning! File fails CRC check! ARJ Ч Bad file data, CRC error! По окончании проверки архива или извлечения файлов из архива на экран выводится сообщение о наличии ошибок в архиве: PKUNZIP Ч имя-архива has errors! ARJ Ч Found ... errors! При извлечении сбойных файлов из архива программа PKUNZIP оставляет их на диске (обычно они ни к какому использованию не пригодны), а программа ARJ Ч удаляет. Впрочем, программа ARJ может не удалять извлеченные из архива сбойные файлы, для этого ей надо указать режим -JR. kчif)^;ЛJ!^ЧI^-!''l 1! При повреждении оглавления .ARJ-архивов Вы можете считать, что Вам крупно не повезло. Обычно при просмотре оглавления, тестировании или извлечении файлов из 01 .':.пик-" 1ИИ ;1;).\И^.'1 такого архива на экран в какой-то момент выводится сообщение типа Can't read file or unexpected end of file (He могу прочесть файл или неожиданный конец файла) и остаток архива уже никак использовать не удастся. Впрочем, при знании структуры .ARJ-файлов (она описана в документации, поставляемой с этим архиватором) опыт- ный пользователь или программист сможет вручную выбросить поврежденный участок из архива. Однако занятие это не из приятных. А с .ZIP-файлами надежды на восстановление данных из архива гораздо больше. Дело в том, что в .ZIP-архивах оглавление записывается дважды: один раз сведения о каж- дом файле из архива содержатся перед данными этого файла, а второй раз Ч в конце архива. Поэтому при большинстве повреждений .ZIP-архивов удается восстановить почти все данные из архива. Если программы PKZIP или PKUNZIP обнаруживают, что оглавление архива повреждено, они выводят на экран сообщение: имя-архива: Error in ZIP, use PKZipFix! (ошибка в архиве, используйте программу PKZipFix) Программы PKZlpi-ix Для восстановления информации из поврежденных архивных файлов вместе с про граммами PKZIP и PKUNZIP поставляется специальная программа PKZIPFIX. Она по зволяет восстанавливать .ZIP-архивы с поврежденным оглавлением. Формат вызова: PKZIPFIX имя-архивного-файла Эта программа создает в текущем каталоге архивный файл PKFIXED.ZIP, содержащий всю информацию, которую удалось восстановить из исходного архивного файла. Реко- мендуется извлечь из него все файлы с помощью программы PKUNZIP, а затем снова упаковать их с помощью программы PKZIP. Другой вариант Ч проверить содержимое архива (режим -Т программы PKUNZIP), удалить из него поврежденные файлы (режим ЧD программы PKZIP) и затем присвоить архиву исходное имя. 33. 1 1. Архивация на дискеты При создании архивов на дискетах возникают дополнительные сложности. Размер дис- кет ограничен, и большие комплексы программ даже в сархивированном виде могут просто не поместиться на одной дискете. Кроме того, могут возникнуть трудности при |