7z之使用方式

官网地址:

http://sparanoid.com/lab/7z/sdk.html


c++下建议编译:

lzma938\CPP\7zip\Bundles\Alone7z\Alone.dsw

生成7zr.exe,使用方式如下


命令:

NAME
       7zr - A file archiver with highest compression ratio

SYNOPSIS
       7zr [adeltux] [-] [SWITCH] <ARCHIVE_NAME> <ARGUMENTS>...

DESCRIPTION
       7-Zip  is  a  file  archiver  with  the  highest compression ratio. The
       program supports 7z (that implements LZMA compression algorithm),  ZIP,
       CAB,  ARJ,  GZIP,  BZIP2,  TAR,  CPIO, RPM and DEB formats. Compression
       ratio in the new 7z format is 30-50% better than ratio in ZIP format.

       7zr is a stand-alone executable. 7zr handles less archive formats  than
       7z,  but does not need any others. 7zr is a "light-version" of 7za that
       only handles 7z archives.

FUNCTION LETTERS
       a      Add

       d      Delete

       e      Extract

       l      List

       t      Test

       u      Update

       x      eXtract with full paths

SWITCHES
       -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

       -l     don’t store symlinks; store the files/directories they point  to
              (CAUTION : the scanning stage can never end because of recursive
              symlinks like ’ln -s .. ldir’)

       -m{Parameters}
              Set             Compression             Method              (see
              /usr/share/doc/p7zip/DOCS/MANUAL/switches/method.htm  for a list
              of methods)

       -mhe=on|off
              7z format only : enables or disables archive  header  encryption
              (Default : off)

       -o{Directory}
              Set Output directory

       -p{Password}
              Set Password

       -r[-|0]
              Recurse  subdirectories (CAUTION: this flag does not do what you
              think, avoid using it)

       -sfx[{name}]
              Create SFX archive

       -si    Read data from StdIn (eg:  tar  cf  -  directory  |  7zr  a  -si
              directory.tar.7z)

       -so    Write data to StdOut (eg: 7zr x -so directory.tar.7z | tar xf -)

       -slt   Sets technical mode for l (list) command

       -v{Size}[b|k|m|g]
              Create volumes

       -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]
              Update options

       -w[path]
              Set Working directory

       -x[r[-|0]]]{@listfile|!wildcard}
              Exclude filenames

       -y     Assume Yes on all queries

DIAGNOSTICS
       7-Zip returns the following exit codes:

              0      Normal (no errors or warnings detected)

              1      Warning (Non fatal error(s)).  For  example,  some  files
                     cannot  be  read  during  compressing.  So  they were not
                     compressed

              2      Fatal error

              7      Bad command line parameters

              8      Not enough memory for operation

              255    User stopped the process with control-C (or similar)

Backup and limitations
       DO NOT USE the 7-zip format for backup purpose on Linux/Unix because :
        - 7-zip does not store the owner/group of the file.

       On Linux/Unix, in order to backup directories you must use tar :
        -  to  backup  a  directory   :  tar  cf  -  directory  |  7zr  a  -si
       directory.tar.7z
        - to restore your backup : 7zr x -so directory.tar.7z | tar xf -

       If  you  want  to send files and directories (not the owner of file) to
       others Unix/MacOS/Windows users, you can use the 7-zip format.

         example : 7zr a directory.7z  directory

       Do not use "-r" because this flag does not do what you think.

       Do not use directory/* because of ".*" files (example  :  "directory/*"
       does not match "directory/.profile")

EXAMPLE 1
       7zr a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir1
              adds all files from directory "dir1" to archive archive.7z using
              "ultra settings"

       -t7z   7z archive

       -m0=lzma
              lzma method

       -mx=9  level of compression = 9 (Ultra)

       -mfb=64
              number of fast bytes for LZMA = 64

       -md=32m
              dictionary size = 32 megabytes

       -ms=on solid archive = on

EXAMPLE 2
       7zr a -sfx archive.exe dir1
              add all files from directory "dir1" to SFX  archive  archive.exe
              (Remark : SFX archive MUST end with ".exe")

EXAMPLE 3
       7zr a -mhe=on -pmy_password archive.7z a_directory
              add  all  files  from  directory  "a_directory"  to  the archive
              "archive.7z" (with data and header archive encryption on)

SEE ALSO
       7z(1), 7za(1), bzip2(1), gzip(1), zip(1)

HTML Documentation
       /usr/share/doc/p7zip/DOCS/MANUAL/index.htm

AUTHOR
       Written for Debian by Mohammed Adnene Trojette.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,关于使用 Bit7z 解压 7z 文件并显示进度条的 MFC 实现,你可以参考以下代码: ```cpp #include <Bit7z.h> void Uncompress7z(const CString& sz7zFile, const CString& szOutputFolder) { // 创建 Bit7z 实例 CBit7z bit7z; // 打开 7z 文件 if (!bit7z.Open(sz7zFile)) { // 打开失败 return; } // 获取压缩文件总大小 UInt64 nTotalSize = bit7z.GetTotalSize(); // 解压进度 UInt64 nUncompressedSize = 0; // 解压缩 while (bit7z.ExtractNext()) { // 更新解压进度 nUncompressedSize += bit7z.GetExtractSize(); // 计算解压进度百分比 int nProgress = (int)(nUncompressedSize * 100 / nTotalSize); // 显示进度条 // ... // 检查是否取消解压缩 // ... // 检查是否有错误发生 if (bit7z.HasError()) { // 出现错误 return; } } } ``` 其中,`sz7zFile` 表示 7z 文件的路径,`szOutputFolder` 表示解压后的输出目录。在函数中,我们首先创建了一个 `CBit7z` 实例,然后打开了 7z 文件。 接着,我们使用 `GetTotalSize` 函数获取压缩文件的总大小,然后进入循环中,每次调用 `ExtractNext` 函数解压缩一个文件,更新解压进度并显示进度条。在循环中,我们还需要检查是否取消解压缩,以及是否有错误发生。 需要注意的是,Bit7z使用需要先引入 Bit7z.h 头文件,并且需要在项目属性中设置相关的库文件和包含目录。此外,进度条的实现和错误处理的方式也需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京橙溪科技有限公司enwing.com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值