PK系列压缩软件使用指南

Author: 欧阳军 Date: 1995-01-06

        在众多的压缩软件中,PKWARE公司的系列压缩软件:PKZIP、PKUNZIP和PKLITE等是同类软件中的佼佼者。
        一、PKZIP V2.04g
        PKZIP是一种通用文件压缩软件,其命令行格式为:
        PKZIP [options] zipfile [@listfile] [files...]
        其中:
        (一)zipfile:为压缩包文件名。(在本文称为ZIP文件)。
        1.其扩展名为ZIP,可缺省。
        2.zipfile可指定ZIP文件的存放路径(除特别说明外, 本文所指路径均包含盘符)。路径缺省时,指当前路径。
        3.zipfile唯一,并且不可缺省。
        (二)[files...]:指欲压缩的文件名(本文称之为“原文件”)清单。文件名之间用逗号“,”分隔。
        1.[files...]前可带路径,路径缺省时指当前路径。
        2.可使用通配符*和?。
        (三)[@listfile]:为预选文件列表。其中:
        1.@为预选文件列表的引用符号。
        2.listfile为预选文件列表的文件名。
        预选文件列表是一个含有预处理文件名的ASCII格式文件(文本文件)。它具有[Files...]相同的作用:用来指定欲压缩、删除或浏览的原文件。
        3.如果在命令行中不指定原文件,即:[files...]和[@listfile]同时缺省,则表示指定路径下的所有文件。
        (四)[options]:为PKZIP的命令。它包括1.命令标识符“-”;2.命令代码(一般由一个ASCII字符构成);3.命令参数(参数之间用|分隔的,表示是互斥的。即:不能同时选用)。
        PKZIP的主要命令有:
        (1)-a:将[files...]及[@listfile]所指定的文件添加到压缩包。这是PKZIP最常用的命令。
        (2)-b[drive]:压缩时在[drive]指定的盘产生一个暂存档,压缩完毕后程序会自动清除它。[drive]缺省时,指当前盘。
        (3)-e[x|n|f|s|0]:在压入文件时选择压缩方式,共有五种方式可供选择。分别是:
        ①-ex:选择最大压缩率方式。
        ②-en:选择一般的方式。-e命令缺省时,默认此方式(缺省模式)。
        ③-ef:选择较快压缩速度方式。
        ④-es:选择最快压缩速度方式。
        ⑤-e0:文件不压缩直接存入压缩包。当需将其他压缩包文件,如:ARJ文件、LZH文件等添加到压缩包时,选用此方式可加快压入速度。因为,这些文件即使采用最大压缩率方式也不能再压缩。
        注意:选择的压缩率越大,压缩速度越慢;反之,选择的压缩速度越快,压缩率越小。
        (4)-f:更新压缩包中的文件。即:将已经更新(修改过)的原文件压入ZIP文件并覆盖压缩包内同名的旧文件,而未更新的原文件不压入压缩包。该命令也比较常用。
        (5)-u:与-a命令相同。
        (6)-m[f|u]:在更新或压入文件时删除原文件。[f|u]选项缺省时默认u参数。
        (7)-p|P:只压入指定路径下的文件和子目录。压入ZIP文件内的原文件不包含/包含指定路径(不含盘符)。
        (8)-r:压入指定路径及各级子目录下的文件。但是子目录不压入, 并且在压缩包内的原文件不含指定路径。
        通常将-r和-p|P命令组合使用,以保持原来的目录结构。在解压时,只能用PKUNZIP的-d命令,才能将子目录也解压出来。
        (9)-&[f|l|u|ul|w|v][s[drive]]:这是V2.04g版本新增的分卷压缩功能。 当ZIP文件较大,一张盘存储不下时,使用此命令可将ZIP文件分割成若干部分,以便软盘存储。
        -&命令的可选项的意义为:
        ①[f]:压缩前先检测目标盘是否已经格式化。若未格式化,则格式化目标盘,然后将文件压入。
        ②[l]:压缩前,先检测目标盘(必须是低密盘)是否已经格式化,若未格式化,则在高密软驱上格式化低密盘(容量:3.5盘为720KB,5.25盘为360 KB)。然后再压入文件。
        ③[u]:压缩前无条件格式化目标盘,然后压入文件。
        ④[ul]:压入前无条件地在高密软驱格式化低密盘,然后将文件压入。
        ⑤[w]:压缩前先删除目标盘上所有文件(不进行格式化),然后再压入文件。
        ⑥[v]:在向压缩包压入文件时进行DOS校验。使用该选项,提高了可靠性,但降低了压入速度。
        ⑦[s[drive]]选项: 将指定盘的所有文件(包括子目录下的文件)全部压入压缩包。但子目录不压入压缩包。[drive]选项缺省时,指当前盘。
        (10)-a+:在压入原文件时清除它的文件属性。
        (11)-s[pwd]:将原文件压入压缩包并设置口令。防止非法用户解包使用。
        ①当[pwd]缺省时,PKZIP会在屏幕上提示你输入口令并验证。
        ②口令中允许使用除控制字符和空格以外的所有ASCII字符、扩展ASCII字符和汉字。但对字母,其大写与小写被认为是不相同的。
        ③同一ZIP文件里的原文件可以用不同的口令压入,也可以不加口令地压入。 是否加有口令,可用-v命令观察其“文件属性(Attr)”项是否带有“*”号。 若在文件属性后面带有*号,则压入时加有口令,否则无口令。
        (12)-t[date]:只压入[date]以后(包括[ date] 所指的这一天)的文件。 
        [date]选项格式为:月 日 年 ,缺省时指当天。
        (13)-T[date]:只压入[date]以前(不包括[date]所指的这一天)的文件。 
        [date]选项格式为:月 日 年 ,缺省时指当天。
        (14)-x<file>:压入除file文件外的其他文件。
        (15)-x@listfile:压入除预选文件列表listfile所指文件之外的其他文件。
        (16)-j|J<h,r,s>:不压入/压入[files...]中的隐含、只读、系统文件。-j|J 命令缺省时,默认jhrs,即:[files...]中的隐含、只读、系统文件均不压入。
        (17)-w|W<h,s>:压入/不压入隐藏、系统文件。-w|W命令缺省时,默认-Whs。
        (18)-d:删除压缩包中的文件。
        (19)-l:显示版权信息等。
        (20)-v[b][r][m][t][c][d|e|n|o|p|s]:浏览压缩包文件。各选项的意义是:
        ①[b]选项:以列表的方式简短列出原文件的压缩前长度(Length )、 压缩方式(Method)、压缩后长度(Size)、压缩率(Ratio)、日期(Date)、 时间(Time)、文件名(Name)。其中,压缩率定义为:
        压缩率=(1-压缩后的文件长度 压缩前的文件长度)×100%
        压缩率越大,压缩能力越强。
        ②[m]选项:显示满屏时暂停,按任一键后,显示下一屏。
        ③[t]选项:与[b]选项不同的是:不是以列表的方式显示原文件,而是逐个列出。
        ④[c]选项:在屏幕上详细列出原文件的压缩前长度(Length )、 压缩方式(Method)、压缩后长度(Size)、压缩率(Ratio)、日期(Date)、 时间(Time)、32位校验码(CRC-32)、文件属性(Attr)、文件名(Name)。此为缺省选项。
        ⑤[r]选项:对列出的文件根据[d|e|n|o|p|S]选择的排序方式进行反排序。
        ⑥[d|e|n|o|p|s]选项:选择排序方式。d:根据日期排序;e:以扩展名排序;n:以文件名排序;o:以原来的顺序;p:以压缩率排序;s:以原文件长度排序。该选项缺省时,默认为n方式。即:以文件名排序。
        (21)-c:添加或编辑文件注释。
        (22)-C:为新压入的文件添加注释。
        (23)-q:在文件注释使用ANSI码。
        (24)-z:新增或修改ZIP文件的注释。
        (25)-k:保持ZIP文件的日期不变。
        (26)-o:将[files...]及@listfile所指文件中最新文件的日期作为ZIP文件的日期。
        (27)-@listfile:建立一个预选文件列表。
        (28)-$[drive]:将由[drive]指定的驱动器的卷标写入压缩包。[drive] 缺省时,为当前驱动器。
        (五)PKZIP常用命令用法举例
        1.PKZIP -A ZIPF1.ZIP *.SYS
        将当前路径下的所有SYS文件全部压入ZIPF1.ZIP文件,而且ZIPF1.ZIP也放在当前路径下。
        2.PKZIP -F ZIPF4
        将当前路径下的所有修改过的文件全部压入ZIPF4.ZIP,并覆盖同名文件。
        3.PKZIP -S1=欧 ZIPF6 D:\DOS\*.EXE
        将D:盘DOS子目录下所有EXE文件全部压入当前目录的ZIPF6.ZIP。并给ZIPF6.ZIP设置口令“1=欧”,解包时必须输入该口令。
        4.PKZIP -VRN ZIPF3
        详细列出ZIPF3.ZIP中原文件的文件长度、压缩方式等。 列出时根据文件名进行反排序。
        5.PKZIP -&FSC A:ZIPF10
        先对A:盘自动格式化或然后将C:盘上的所有文件压入A :盘的ZIPF10.ZIP文件。当第一张盘存满时,会在屏幕下部显示如下信息:
        Insert disk #2 -Press a key when ready
        意思时:插入第二张盘,然后按任一键继续。当第二张盘又存满后,PKZIP又会提醒你换盘,直到文件全部压入。
        由于每一张软盘上的文件名都相同,不易区别,因此应及时在软盘上作好标记。对该ZIP文件解压时,须按盘号顺序依次插入软盘。
        6.PKZIP -T050195 ZIPF11 *.PRG
        将1995年5月1日以前(不包括5月1日这一天)扩展名为PRG的文件压入ZIPF11.ZIP
        7.PKZIP -xCONFIG.SYS BOOT C:\*.*
        除了CONFIG.SYS外,将C:盘根目录下的其他文件全部压入BOOT.ZIP。
        8.PKZIP -@PRG.LST FOX C:\FOX\*.PRG,C:\FOX\*.FOX
        建立一个预选文件列表PRG.LST。
        9.PKZIP -x@PRG.LST FOX C:\FOX\*.*
        将C:盘FOX子目录下除PRG文件和FOX文件外的其他所有文件全部压入FOX.ZIP。
        10.-r、-p、-P、及其组合命令-rp、-rP的区别。
        假定在C:盘根目录下有如下面一个目录结构:
        C:\OU1
        │
        │Y1.BAT
        │TC.EXE
        └─OU2
        │
        │Y2.BAT
        └─OU3
        Y3.BAT
        YAN.PRG
        分别键入如下五条命令:
        PKZIP -r Z1 C:\OU\*.BAT
        PKZIP -p Z2 C:\OU\*.BAT
        PKZIP -P Z3 C:\OU\*.BAT
        PKZIP -rp Z4 C:\OU\*.BAT
        PKZIP -rP Z5 C:\OU\*.BAT
        然后用-V命令分别浏览五个ZIP文件,可以发现五个ZIP文件中的原文件是互不相同的(见表一)。
        表一    -r,-p|P及其组合命令压入文件对照表
        ┌──┬────┬───┬─────┬───────┬─────────┐
        │命令│-r │-p │-P     │-rp     │-rP │
        ├──┼────┼───┼─────┼───────┼─────────┤
        │    │Y1.BAT │Y1.BAT│OU1/Y1.BAT│Y1.BAT     │Y1.BAT │
        │    │Y2.BAT │OU2/ │OU1/OU2/  │OU2/     │OU2/ │
        │    │Y3.BAT │ │     │OU2/Y2.BAT    │OU2/Y2.BAT │
        │    │ │ │     │OU2/OU3/     │OU2/OU3/ │
        │    │ │ │     │OU2/0U3/Y3.BAT│OU2/0U3/Y3.BAT │
        └──┴────┴───┴─────┴───────┴─────────┘
        二、PKUNZIP V2.04g
        PKUNZIP是一个解包软件。用来展开由PKZIP产生的压缩包文件。
        其命令行格式为:
        PKUNZIP [options] zipfile [@listfile] [files...]
        其中:
        (一)zipfile:为压缩包文件名。
        1.其扩展名为ZIP,可缺省。
        2.zipfile前可带路径。路径缺省时,指当前路径。
        3.zipfile唯一,并且不可缺省。
        (二)1.[files...]:指欲从ZIP文件解压出来的文件名清单。 文件名之间用逗号“,”分隔。
        (1)[files...]可指定展开文件的存放路径,路径缺省时指当前路径。
        (2)可使用通配符:*和?。
        2.[@listfile]:为预选文件列表。其中:
        (1)@为预选文件列表的引用符号。
        (2)listfile为预选文件列表的文件名。
        预选文件列表是一个含有预处理文件名的ASCII格式文件(文本文件)。它具有[Files...]相同的作用:用来指定欲从ZIP文件内解压出来的原文件。
        3.若在命令行中不指定原文件,即:[files...]和[@listfile]同时缺省,则表示ZIP文件内的所有文件。
        (三)[options]:为PKUNZIP的命令。它包括①命令标识符“-”;②命令代码(一般由一个ASCII字符构成);③命令参数(参数之间用 | 分隔的,表示是互斥的。即:不能同时选用)。 
        PKUNZIP的主要命令有:
        (1)-c[m]:将原文件的内容以ASCII码的形式显示在屏幕上。 压入时加有口令的原文件,需用-cms<pwd>命令才能显示出来。
        [m]选项:显示完一个原文件或显示满屏时暂停, 按任一键继续显示下一个文件或下一屏。
        (2)-d:当ZIP文件里含有子目录名时,须用此命令才能将子目录也解压出来。否则,虽然子目录下的原文件能解压出来,但已没有原来的目录结构。
        (3)-e[c|d|e|n|p|r|s]:根据所选择的排序方式将原文件依次解压出来。
        [c|d|e|n|p|r|s]选项为排序方式选择。其中:
        ①c: 根据校验码排序。
        ②d:按日期排序。
        ③e:以扩展名排序。
        ④n:按文件名排序。
        ⑤p:根据压缩率排序。
        ⑥r:选择反排序。
        ⑦s:根据文件长度排序。
        (4)-f:仅展开指定目录下存在的文件。
        (5)-j|J<h,r,s>:同PKZIP的-j|J命令。
        (6)-n:仅展开指定路径没有的文件。这是PKUNZIP常用的命令。
        (7)-o:将解压出来的文件覆盖指定路径下的同名文件。这也是PKUNZIP常用的命令。
        若不用-n、-o命令,当解压出来的文件(设为:CONFIG.SYS)与指定路径下的文件同名时,PKUNZIP会在屏幕上显示如下信息:
        PKUNZIP:(W18)Warning! CONFIG.SYS already exists. Overrite(y/n/a/r)?
        意思是:解压出来的文件CONFIG.SYS在指定路径下已经存在。是否覆盖它?Y:覆盖;N:不覆盖;A:覆盖;R:将解压出来的文件改名。应根据实际情况进行选择。
        (8)-p[a|b][c][#]:将压缩包中的原文件以ASCII码([a]选项)/二进制码([b]选项)、以通信口([c]选项)的形式输出到打印机。[#]为计算机的输出端口号,其值为1、2或3。
        (9)-s[pwd]:展开压缩包中设置了口令的原文件。
        当[pwd]缺省时,PKZIP会在屏幕上提示你输入口令并验证。
        (10)-t:测试压缩包中原文件的完好情况。
        (11)-v[b][r][m][t][c|d|e|n|o|p|s]:与PKZIP的-v命令完全相同。
        (12)-x<file>:展开除file文件外的其他文件。
        (13)-@listfile:建立预选文件列表。同PKZIP的-@listfile命令。
        (14)-$:将ZIP文件内存储的卷标写到目标盘。
        (四)PKUNZIP常用命令用法举例
        1.PKUNZIP -o ZIPF3
        将ZIPF3.ZIP中的所有文件全部解压出来,并将展开出来的文件存放在当前路径下。 若解压出来的文件在当前路径下已存在,则覆盖其同名文件。
        2.PKUNZIP -n ZIPF3
        仅展开ZIPF3.ZIP 中当前路径下不存在的文件,并将展开出来的文件存放在当前路径下。
        3.PKUNZIP -d ZIPF5 C:\
        将ZIPF5.ZIP 里的所有文件(包括子目录)按压缩前的目录结构解压出来并存放在C:盘根目录下。
        4.PKUNZIP -s123 ZIPF6 *.EXE
        将压入时加有口令的EXE文件解压出来。
        三、ZIP2EXE V2.04g
        ZIP2EXE的作用是将ZIP文件转换为可自展开的程序(EXE文件)。即:ZIPFILE.ZIP-->ZIPFILE.EXE。
        ZIP2EXE的命令行格式为:
        ZIP2EXE [options] ZipFile
        其中:
        (一)ZipFile:欲转换的ZIP文件。
        (二)[options]:为ZIP2EXE的命令:
        (1)-j:产生一个较小的自释放文件。
        (2)-e:将自释放文件还原为ZIP文件。此为ZIP2EXE V2.04g新增的命令。
        (3)命令缺省时,将产生一个标准的自释放文件。
        四、PKLITE(V1.15版)
        PKLITE不同于PKZIP、ARJ等,它是专门用来压缩可执行文件的。压缩后产生的文件不用解压也能正常使用。PKLITE具有程序短小精悍、压缩率高、压缩速度快等优点,是目前最流行的可执行文件压缩工具。
        其命令行格式为:
        PKLITE [Options] Infile [Outfile]
        说明:
        (一)Infile为欲压缩的可执行文件,也称原文件。
        (1)其扩展名(EXE或COM)可缺省,但文件名不可缺省。
        (2)Infile前可带路径,路径缺省时指当前路径。
        (3)可使用通配符*和?
        (二)[Outfile]指压缩后产生的文件,也称输出文件。
        (1)若[Outfile]缺省, 则在原文件所在路径产生一个与原文件同名的文件(原文件被覆盖或将扩展名改为BAK)。
        (2)[Outfile]可指定输出文件的存盘路径,路径缺省时为当前路径。
        (三)[Options]是PKLITE的命令,它包括命令标识符“-”和命令代码。PKLITE各命令的功能分别是:
        (1)-a:无条件压缩可执行文件(不论原文件中是否含有覆盖数据)。
        (2)-b:压缩时如果在指定路径存在与输出文件同名的文件, 则将同名文件的扩展名更名为BAK。
        (3)-o:压缩时如果在指定路径存在与输出文件同名的文件, 则覆盖同名文件。
        在不使用-b或-o命令时,如果在指定路径存在与输出文件同名的文件,则会在屏幕上显示如下信息:
        File:XXXXX.XXX already exists. Overwite(y/n)?
        意思是:在指定路径已经存在与输出文件XXXXX.XXX同名的文件,是否覆盖它(y/n)?
        (4)-e:使产生的压缩文件不能被还原。仅商业版有效。
        很多著名的软件,如:MS_DOS6.2、PCTOOLS V8.0等,都是用此命令压缩后才发行的,以保证软件长度的唯一性。
        (5)-l:显示版权信息等。
        (6)-n:如果原文件中含有覆盖数据,则不压缩。
        在使用-b、-o或-u命令时,若原文件中含有覆盖数据,PKLITE会在屏幕上显示如下信息:
        File: FOXPLUS.EXE may contain overlays. Compress(y/n)?
        其含义是:原文件FOXPLUS.EXE中含有覆盖数据,是否对原文件进行压缩(y/n)?
        (7)-r:将原文件中的覆盖数据移开。
        (8)-u:压缩时把当前时间作为输出文件的创建时间。
        (9)-x:将压缩后的文件会还原。
        有极少数文件压缩后不能正常使用,可用-x命令还原。
        (四)PKLITE用法举例
        1.PKLITE -BU WPS.EXE
        将原文件WPS.EXE更名为WPS.BAK,将产生的输出文件命名为WPS.EXE, 并将当前时间作为输出文件的创建时间。
        2.PKLITE -N C:\FOX\FOX*.EXE
        压缩C:盘FOX子目录下的FOX*. EXE 文件, 但对含有覆盖数据的原文件(如:FOXPLUS.EXE等)不压缩。
        3.PKLITE -A C:\FOX\FOXPLUS
        压缩C:盘FOX子目录下的FOXPLUS.EXE文件。
        五、几点说明
        (一)命令的组合使用
        PK系列压缩软件都允许命令组合使用,以实现更多的功能。命令的组合应当满足以下规定:
        1、组合的命令必须是同一类命令,不同类型的命令是不能组合在一起使用的。如:PKZIP的-S、-T命令都是压缩命令,可以组合使用。而-U与-V 是不能组合使用的。
        2、组合命令的排列顺序没有严格的限制。如:
        PKZIP -S123 -T050195 BOOT C:\
        PKZIP -T050195 -S123 BOOT C:\
        这两条命令具有相同的作用:将C: 盘根目录下日期为1995年5月1日以前的文件压入BOOT.ZIP,压入时设置口令123。
        3、可带参数的命令与其他命令组合时, 命令之间必须用空格分隔并且每个命令代码之前都必须带有命令标识符“-” 。例:
        PKZIP -S123T050195 BOOT C:\
        其作用是:将C:盘根目录下的所有文件全部压入BOOT. ZIP , 压入时设置口令123T050195。这显然与:
        PKZIP -S123 -T050195 BOOT C:\
        大不相同。
        (二)命令参数的组合使用
        1、互斥的参数(即:用|分隔的参数)不能组合使用。
        2、命令参数与命令代码之间以及命令参数与命令参数之间不能留有空格。
        3、参数排列顺序没有严格的限制。
        (三)关于字母的大小写
        1、一些命令代码的大写与小写实现不同的功能。
        2、命令参数的大写与小写是一致的。
        3、口令中字母的大写与小写分别表示不同的字符。例如:ABC与aBc 被认为是不同的口令。