zoukankan      html  css  js  c++  java
  • 7-zip认识

    功能认识[存储但没有认识]

    转http://www.pc6.com/edu/53526_all.html

    正文:

    7-zip的功能是非常强大的,它不但有最小压缩比例的压缩方法,更有一些非常方便的命令,下面pc6带你一起学习一下

    7z.exe在CMD窗口的使用说明如下: 

    7-Zip (A) 4.57 Copyright (c) 1999-2007 Igor Pavlov 2007-12-06

    Usage: 7za [...] <archive_name>[<file_names>...]
    [<@listfiles...>]

    a: Add files to archive
    b: Benchmark
    d: Delete files from archive
    e: Extract files from archive (without using directory names)
    l: List contents of archive
    t: Test integrity of archive
    u: Update files to archive
    x: eXtract files with full paths

    -ai[r[-|0]]{@listfile|!wildcard}: Include archives
    -ax[r[-|0]]{@listfile|!wildcard}: eXclude archives
    -bd: Disable percentage indicator
    -i[r[-|0]]{@listfile|!wildcard}: Include filenames
    -m{Parameters}: set compression Method
    -o{Directory}: set Output directory
    -p{Password}: set Password
    -r[-|0]: Recurse subdirectories
    -scs{UTF-8 | WIN | DOS}: set charset for list files
    -sfx[{name}]: Create SFX archive
    -si[{name}]: read data from stdin
    -slt: show technical information for l (List) command
    -so: write data to stdout
    -ssc[-]: set sensitive case mode
    -ssw: compress shared files
    -t{Type}: Set type of archive
    -v{Size}[b|k|m|g]: Create volumes
    -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]: Update options
    -w[{path}]: assign Work directory. Empty path means a temporary directory
    -x[r[-|0]]]{@listfile|!wildcard}: eXclude filenames
    -y: assume Yes on all queries

    7-zip命令中文使用说明如下:

    语法
    7z <命令行> [<选项>...] <基本档案名称> [<参数变量>...]
    7z [...] <base_archive_name>[...]

    <参数变量> ::= <选项> | <通配符> | <文件名> | <文件列表>
    <选项>::= <选项标记><选项字符>[<选项>]
    <选项标记> ::= '/' | '-'
    <文件列表> ::= @{文件名}

    ::= | | | <list_file>
    ::= <switch_symbol><switch_characters>[]<switch_symbol>::= '/' | '-' <list_file>::= @{filename}在方括号内的表达式(“[” 和 “]”之间的字符)是可选的。' ?2 k0 k/ m* f. Q$ c4 h在书名号内的表达式(“<” 和 “>”之间的字符)是必须替换的表达式(而且要去掉括号)。表达式

    expression1 | expression2 | ... | expressionN

    命令行 及 选项 使用大写或小写字母都可以。
    首个命令行必须是无选项的参数变量。
    选项及其它文件名的输入顺序可以打乱。
    带有空格的通配符或文件名必须加上引号:
    "DirProgram files*"

    Dir"Program files"*.

    通配符是一个键盘字符,例如星号(*)或问号(?),当执行添加文件、释放文件、选定文件、删除文件等操作时,您可以使用它来代表一个或多个字符。当您不知道真正字符或者不想键入完整名称时,常常使用通配符代替一个或多个字符。
    '7-Zip 支持和 Windows 相类似的通配符:
    “*”可以使用星号代替零个或多个字符。
    “?”可以用问号代替名称中的单个字符。
     7-Zip 使用的并不是系统处理通配符的默认方法,因而 7-Zip 不支持其它通配符规则,在系统中 *.* 相当于所有文件。而 7-Zip 会将其视为任何扩展名的全部文件。所以,要处理所有文件您必须使用 * 通配符。
    示例:
    *.txt 这样会查找(添加、选定……)所有扩展名是“.txt”的文件
    ?a* 这样会查找(添加、选定……)所有第二个字母为“a”的文件
    *1* 这样会查找(添加、选定……)所有包含“1”的文件
    *.*.* 这样会查找(添加、选定……)所有包含“.”的双扩展名文件
    如果在命令行中没有文件名,系统将会使用默认通配符“*”。
    档案文件中通配符及文件名的使用限制:
    通配符及文件名不能包括系统盘符或网址。每个通配符及文件名路径将被视为从盘符到当前目录的完整路径/从压缩档案的根目录算起的完整路径。换句话说,路径的开始部分(在首个斜线(“”)之前的字符)必须是某个名称或通配符。 1 [% e: w/ V/ g, l" t0 N
    通配符及文件名不能以斜线(“”)结尾。
    通配符只可以在完整路径的最后一部分中出现。

    示例:
    Dir1*.cpp 正确
    c:Dir1*.cpp 错误:路径中不能包括盘符
    Dir1Dir2g?.txt 正确 ; i7 Q+ P) e2 F8 g
    Dir1D?r2file1.txt 错误:只有在以路径的最后一部分才能使用通配符
    文件列表:
    您可以使用文件列表来对要操作的文件进行批量操作。在文件中的文件名必须用空格或另起一行隔开。(如使用空格格开,每一个文件必须加引号)。
    命令行支持多个文件列表同时操作。
    举个例子,这里有一个文件列表“listfile.txt”包含下列内容:
    "My programs*.cpp"
    Src*.cpp
    那么我们可以输入命令:
    7z a -tzip archive.zip @listfile.txt
    将“My programs”及“Src”目录中所有扩展名为“cpp”的文件添加到压缩档案“archive.zip”中。

    命令行
    命令行的命令不分大小写。
    更多有关命令行的详细内容请参阅 语法。
    命令要点参考

    命令 作用说明
    a 添加
    d 删除
    e 释放
    l 列表
    t 测试
    u 更新
    x 完整路径释放

    命令行选项
    语法
    <选项>::= <选项_符号><选项_字符>[<选项>]
    <选项_符号> ::= '/' | '-'
    <switch>::= <switch_symbol><switch_characters>[]<switch_symbol>::= '/' | '-'在命令行中,一个完整的选项由指定的选项、连字符(-)或斜线(/)组成,而且选项的符号不能使用缩写。选项名称不区分大小写。而一部分选项会包括参数变量,它们是需要区分大小写的。选项可以使用在命令行中的任何位置。

     示例:

    (参考greegree的文章)先给出一个压缩文件的例子:

    7z a -t7z archive.7z *.exe *.dll -m0=BCJ -m1=LZMA:d=21 -ms -mmt

        添加 *.exe 及 *.dll 文件到固实压缩档案 archive.7z。使用 LZMA 压缩算法、2 MB 字典大小及 BCJ 转换器。压缩将开启多线程优化(如果可用)。

       -ms 默认设置固实模式。在创建固实压缩档案模式中,它把压缩档案中的所有文件都当成一个连续数据流来看待。通常情况下,固实压缩可增加压缩比,特别是在添加大量小文件的时候
    -mmt 默认开启多线程模式。   
    以上两条倒是可以理解,但是“-m0=BCJ -m1=LZMA:d=21 ”又该如何解释?
    按照给出的中文的文档说明:
    -m0=BCJ -- 第一个备选的压缩算法为BCJ
    -m1=LZMA:d=21 -- 第二个备选的压缩算法为LZMA,指定字典大小为默认的21(2MB的1次方)2MB。
    如果:想要使用最大化压缩,可以使用下面的参数选项:

        7z a -t7z DriverTest_1.7z "I: 1*" -mx=9 -ms=200m -mf -mhc -mhcf -m0=LZMA:a=2:d=25:mf=bt4b:fb=64 -mmt -r

    -t7z -- 压缩文件的格式为7z
    -mx=9 -ms=200m -mf -mhc -mhcf -m0=LZMA:a=2:d=25:mf=bt4b:fb=64 -mmt
    -- 指定压缩算法选项
    -mx=9 -- 设置压缩等级为极限压缩(默认为:LZMA 最大算法、32 MB 字典大小、BT4b Match finder、单词大小为 64、BCJ2 过滤器)
    -ms=200m -- 开启固实模式,设置固实数据流大小为200MB。
    -mf -- 开启可执行文件压缩过滤器。
    -mhc -- 开启档案文件头压缩。
    -mhcf -- 开启档案文件头完全压缩。我所使用的7z版本为4.42>2.30。
    -m0=LZMA:a=2:d=25:mf=bt4b:fb=64
    -- 第一个备选压缩算法为LZMA,压缩等级为最大压缩,LZMA算法使用的字典大小为25(2MB的5次方)32MB,算法的匹配器为bt4b(所需要内存为d×9.5 + 34 MB),压缩算法的紧凑字节为最大模式的64字节。
    -mmt -- 开启多线程模式。
    -r -- 递归到所有的子目录。


    7z命令解压文件的例子:解压File.7z文件到目录Mydir。

    7z x "d:File.7z" -y -aos -o"d:Mydir"

    参数说明:

    x:完整路径下解压文件

    -y:所有确认选项都默认为是(即不出现确认提示)

    -aos:跳过已存在的文件

    -o:设置输出目录
    关于内存的使用:

    一般来说,WindowsXP至少使用80~160MB的内存,为了保证系统的运行正常,还要留够32MB的剩余物理内存。
    所以如果是512MB的内存,那么7z压缩所使用的内存为(512-32-160)320MB,使用bt4b(d*9.5+34MB),所以d=32MB。
    如果是256MB的内存,那么7z压缩所使用的内存为(256-32-120)104MB,使用bt4b(d*9.5+34MB),所以d=8MB。
    由此可见,在WindowsXP的图形界面下要想得到更大的压缩比,或者扩大物理内存的容量,或者可以采用在DOS下运行32位程序的方法;否则无论你的虚拟内存或者系统的磁盘缓存设置得再大,只能看见硬盘灯狂闪得交换页面文件。
    通常情况下,较大的字典文件能提供较高的压缩比。但是在压缩和解压缩的时候会比较慢而且需要较多的物理内存:压缩时所使用的物理内存约为字典文件的10倍,解压缩时所使用的物理内存约等于字典文件大小。

    语法格式:(详细情况见7-zip帮助文件,看得头晕可以跳过,用到再学)
    7z [...] <base_archive_name>[...]

    7z.exe的每个命令都有不同的参数,请看帮助文件
    <base_archive_name>为压缩包名称
    为文件名称,支持通配符或文件列表
    a: 添加文件的压缩包,或者创建新的压缩包。

    d: 从压缩包中删除文件。

    e: 从压缩包中提取。

    t: 测试压缩包的是否出错。

    u: 更新压缩包中的文件。
    其中,7z是至命令行压缩解压程序7z.exe,是7z.exe包含的命令,列举如下:

    a: Adds files to archive. 添加至压缩包
    a命令可用参数:
    -i (Include)
    -m (Method)
    -p (Set Password)
    -r (Recurse)
    -sfx (create SFX)
    -si (use StdIn)
    -so (use StdOut)
    -ssw (Compress shared files)
    -t (Type of archive)
    -u (Update)
    -v (Volumes)
    -w (Working Dir)
    -x (Exclude)


    b: Benchmark

    d: Deletes files from archive. 从压缩包中删除文件
    d命令可用参数:
    -i (Include)
    -m (Method)
    -p (Set Password)
    -r (Recurse)
    -u (Update)
    -w (Working Dir)
    -x (Exclude)

    e: Extract解压文件至当前目录或指定目录
    e命令可用参数:
    -ai (Include archives)
    -an (Disable parsing of archive_name)
    -ao (Overwrite mode)
    -ax (Exclude archives)
    -i (Include)
    -o (Set Output Directory)
    -p (Set Password)
    -r (Recurse)
    -so (use StdOut)
    -x (Exclude)
    -y (Assume Yes on all queries)

    l: Lists contents of archive.
    t: Test
    u: Update

    x: eXtract with full paths用文件的完整路径解压至当前目录或指定目录
    x命令可用参数:
    -ai (Include archives)
    -an (Disable parsing of archive_name)
    -ao (Overwrite mode)
    -ax (Exclude archives)
    -i (Include)
    -o (Set Output Directory)
    -p (Set Password)
    -r (Recurse)
    -so (use StdOut)
    -x (Exclude)
    -y (Assume Yes on all queries)
    -m (Set compression Method) switch
    Specifies the compression method.


    用7-ZIP实现批处理 命令行压缩和解压功能

    编辑一个.bat文件;每行这样写,就可以连续压制多个目录了
    7z a -mx9 -md64m -mfb=273 -slp -ssw -v1024m -mmt=2 -r
    {路径及7z档名} {路径及要压缩的文件名及路径 可以空格填多个}

    例子:建议以成对双引号来包压缩档名和路径名
    7z a -mx9 -md64m -mfb=273 -slp -ssw -v1024m "game" "d:game*.*"
    把d:game 以ultra模式 64m字典fb273 每分卷1024m模式压缩

    -mxN N=0~9 ;压缩模式选择
    Level Method Dictionary FastBytes MatchFinder Filter Description
    0 Copy No compression.
    1 LZMA 64 KB 32 HC4 BCJ Fastest compressing
    3 LZMA 1 MB 32 HC4 BCJ Fast compressing
    5 LZMA 16 MB 32 BT4 BCJ Normal compressing
    7 LZMA 32 MB 64 BT4 BCJ Maximum compressing
    9 LZMA 64 MB 64 BT4 BCJ2 Ultra compressing -mdNm 填字典大小 比如填26 和填64m一样的;看说明更大内存也可以填,比如128m字典
    最大1024m

    The maximum value for dictionary size is 1 GB = 2^30 bytes. Default values for LZMA are 24 (16 MB) in normal mode, 25 (32 MB) in maximum mode (-mx=7) and 26 (64 MB) in ultra mode (-mx=9).

    -mfb=N 填fastbytes大小,此数字增大会稍微加大压缩但减慢速度

    -slp (Set Large Pages mode);会加快压缩,但开始会卡下,This feature works only on Windows 2003 / XP x64

    -ssw 也压缩共享文件

    -v (Create Volumes) switch
    Specifies volume sizes.
    Syntax
    -v{Size}[b | k | m | g]

    -mmt=N 多核选项,比如双核填2


    命令行压缩解压一 7z

    1) 简介
    7z,全称7-Zip, 是一款开源软件。是目前公认的压缩比例最大的压缩解压软件。
    主页:http://www.7-zip.org/
    中文主页:http://7z.sparanoid.com/
    命令行版本下载:http://7z.sparanoid.com/download.html
    主要特征:
    # 全新的LZMA算法加大了7z格式的压缩比
    # 支持格式:
    * 压缩 / 解压缩:7z, XZ, BZIP2, GZIP, TAR, ZIP
    * 仅解压缩:ARJ, CAB, CHM, CPIO, DEB, DMG, FAT, HFS, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, RAR, RPM, UDF, VHD, WIM, XAR, Z

    2)退出代码
    0 : 正常,没有错误;
    1 : 警告,没有致命的错误,例如某些文件正在被使用,没有被压缩;
    2 : 致命错误;
    7 : 命令行错误;
    8 : 没有足够的内存;
    255 : 用户停止了操作;

    3)使用语法
    7z <命令行> [<选项>...] <基本档案名称> [<参数变量>...]

    在方括号内的表达式(“[” 和 “]”之间的字符)是可选的。
    在书名号内的表达式(“<” 和 “>”之间的字符)是必须替换的表达式(而且要去掉括号)。

    7-Zip 支持和 Windows 相类似的通配符:
    “*”可以使用星号代替零个或多个字符。
    “?”可以用问号代替名称中的单个字符。
    如果只用*,7-Zip 会将其视为任何扩展名的全部文件。

    4)命令及实例

    a 添加文件到压缩档案。
    7z a archive1.zip subdir :增加subdir文件夹下的所有的文件和子文件夹到archive1.zip中,archived1.zip中的文件名包含subdir前缀。
    7z a archive2.zip .subdir* :增加subdir文件夹下的所有的文件和子文件夹到archive1.zip中,archived2.zip中的文件名不包含subdir前缀。
    cd /D c:dir1
    7z a c:archive3.zip dir2dir3 :archiive3.zip中的文件名将包含dir2dir3前缀,但是不包含c:dir1前缀。
    7z a Files.7z *.txt -r : 增加当前文件夹及其子文件夹下的所有的txt文件到Files.7z中。

    b 测试 CPU 运行速度及检查内存错误。

    d 从压缩档案删除文件。
    7z d archive.zip *.bak -r :从archive.zip中删除所有的bak文件。

    e 从压缩档案中释放文件到当前目录中。或者到指定的输出文件夹。输出文件夹设置可以通过 -o (设置输出文件夹) 选项来更改。此命令会将所有被释放的文件放置到一个文件夹。如果您想使用完整路径释放文件,您必须使用 x (完整路径释放) 命令。
    7z e archive.zip :从压缩档案 archive.zip 中释放所有文件到当前文件夹。
    7z e archive.zip -oc:soft *.cpp :从压缩档案 archive.zip 中释放 *.cpp 文件到 c:soft 文件夹。

    l 列出压缩档案内容。
    7z l archive.zip :列出压缩档案 archive.zip 的内容。

    t 测试压缩档案文件的完整性。
    7z t archive.zip *.doc :在压缩档案 archive.zip 中测试 *.doc 文件的完整性。

    u 在压缩档案文件中使用较新的文件替换掉较旧的文件。
    7z u archive.zip *.doc :在压缩档案 archive.zip 中更新 *.doc 文件。

    x 在当前目录中,使用完整路径从压缩档案中释放文件.或者到指定的输出文件夹。
    7z x archive.zip :从压缩档案 archive.zip 中释放所有文件到当前文件夹。
    7z x archive.zip -oc:soft *.cpp :从压缩档案 archive.zip 中释放 *.cpp 文件到 c:soft 文件夹。

    5)更多的选项

    -- 在命令行中使“--”后的选项开关“-”都失效。这样就允许在命令行中使用文件名以“-”开头的文件。
    7z t -- -ArchiveName.7z :测试 -ArchiveName.7z 压缩档案.

    -i指定压缩时附加文件或一类文件。此选项可附件添加多个类型。
    i[<recurse_type>]<file_ref> 其中<recurse_type>为可以为r[- | 0](具体的-r选项见后面-r),<file_ref>可以为@{listfile} | !{wildcard}。
    7z a -tzip src.zip *.txt -ir!DIR1*.cpp :从当前目录中添加 *.txt 文件,和 DIR1 目录及其子目录中的 *.cpp 文件到 src.zip 压缩档案。

    -x 指定某一文件或某一类文件从操作中排除。此选项可同时排除多个类型。
    x[<recurse_type>]<file_ref> 其中<recurse_type>为可以为r[- | 0](具体的-r选项见后面-r),<file_ref>可以为@{listfile} | !{wildcard}。
    7z a -tzip archive.zip *.txt -x!temp.* :添加除 temp.* 文件之外的所有 *.txt 文件到压缩档案 archive.zip。

    -o 指定释放文件的输出文件夹。此选项只能和释放命令配合使用。
    7z x archive.zip -oc:Doc :从 archive.zip 压缩档案释放所有文件到 c:Doc 文件夹。

    -r 递归子目录选项。
    -r 开启递归子目录。对于 e (释放)、l (列表)、t (测试)、x (完整路径释放) 这些在压缩档案中操作的命令, 会默认使用此选项。
    -r- 关闭递归子目录。对于 a (添加)、d (删除)、u (更新) 等所有需扫描磁盘文件的命令,会默认使用此选项。
    -r0 开启递归子目录。但只应用于通配符。
    7z l archive.zip -r- *.doc :列出在 archive.zip 压缩档案中根目录下的 *.doc 文件。
    7z a -tzip archive.zip -r src*.cpp src*.h :将 src 目录及其子目录中的 *.cpp 及 *.h 文件添加到 archive.zip 压缩档案。

    -t 指定压缩档案格式。指定压缩档案格式。它们可以是:zip、7z、rar、cab、gzip、bzip2、tar 或其它格式。而 默认值是 7z 格式。
    7z a -tzip archive.zip *.txt :使用 zip 格式从当前目录中添加所有 *.txt 文件到压缩档案 archive.zip。

    -y 使 7-Zip 执行命令时的大多数提示失效。您可以使用此选项来阻止在 e (释放) 和 x (完整路径释放) 命令中文件覆盖时的提示。
    7z x src.zip -y :从 src.zip 释放所有文件。所有的覆盖提示将被阻止且所有相同文件名的文件将被覆盖。

    -v指定分卷大小。
    {Size}[b | k | m | g]
    指定分卷大小,可以使用字节、KB(1 KB=1024 字节),MB(1 MB = 1024 KB)或 GB(1 GB = 1024 MB)。如果您只指定了 {Size},7-zip 将把它视为字。
    7z a a.7z *.txt -v10k -v15k -v2m : 创建 a.7z 分卷压缩档案。第一个分卷为 10 KB,第二个为 15 KB,剩下全部为 2 MB。

    -p 指定密码。
    7z x archive.zip -psecret :将设有密码“secret”的压缩档案 archive.zip 中所有文件释放。

    -ao 指定在释放期间如何覆盖硬盘上现有的同名文件。
    语法:-ao[a | s | u ]
    -aoa 直接覆盖现有文件,而没有任何提示。
    -aos 跳过现有文件,其不会被覆盖。
    -aou 如果相同文件名的文件以存在,将自动重命名被释放的文件。举个例子,文件 file.txt 将被自动重命名为 file_1.txt。
    -aot 如果相同文件名的文件以存在,将自动重命名现有的文件。举个例子,文件 file.txt 将被自动重命名为 file_1.txt。
    7z x test.zip -aoa :从压缩档案 test.zip 中释放所有文件并却不做提示直接覆盖现有文件。

    -an 不解析命令行中的 archive_name 区域。此选项必须和 -i (附加文件) 开关一起使用。比如您为压缩档案使用列表文件,您就需要指定 -ai 选项,所以您需要禁止解析命令行中的 archive_name 区域。
    实例见后面的-ai和-ax中。

    -ai 指定附加文件,包括压缩档案文件名及通配符。此选项可同时附加多个类型。
    ai[<recurse_type>]<file_ref> 其中<recurse_type>为可以为r[- | 0](具体的-r选项见后面-r),<file_ref>可以为@{listfile} | !{wildcard}。
    7z t -an -air!*.7z : 在当前目录及子目录下测试 *.7z 压缩档案。

    -ax 指定必须从操作中排除的压缩档案。此选项可同时排除多个类型。
    ax[<recurse_type>]<file_ref> 其中<recurse_type>为可以为r[- | 0](具体的-r选项见后面-r),<file_ref>可以为@{listfile} | !{wildcard}。
    7z t -an -ai!*.7z -ax!a*.7z :测试除 a*.7z 之外的 *.7z 压缩档案。

    更多的不常用的选项,可以查看帮助。例如:-m设置压缩算法;-scs 设置要压缩的文件的列表文件的字符集;-seml通过电子邮件发送压缩档;-sfx创建自释放档;-si从标准输入读入数据,-so从输出到标准输 出;-slp设置大内存模式;-slt显示技术信息;-ssc设置区分大小写;-ssw压缩正在写入的文件;-u更新选项。

  • 相关阅读:
    设计模式之 原型模式
    设计模式之 策略模式
    设计模式之 单例模式
    使用IntelliJ IDEA 15和Maven创建Java Web项目(转)
    Java 内存分配全面浅析(转)
    java常量池概念 (转)
    java基本类型和包装类的区别(转)
    JAVA数据类型(转)
    SQL SERVER 2008 服务器登录名、角色、数据库用户、角色、架构的关系(转)
    视图的好处(转)
  • 原文地址:https://www.cnblogs.com/Pucua/p/9678600.html
Copyright © 2011-2022 走看看