• 9187阅读
  • 1回复

压缩解压进度显示工具-9.22更新 [复制链接]

上一主题 下一主题
离线novesky
 

图酷模式  只看楼主 倒序阅读 楼主  发表于: 2010-09-16
— 本帖被 XChinux 执行加亮操作(2004-01-03) —
软件名:qop. Qt Output Parser for tar, zip, unzip, unrar,7z with compressing/extracting progress indicator.
用于显示tar,zip,unzip,unrar,7z这些工具进行压缩解压时的进度,与tar结合使用的工具如gzip,xz等也可以处理。
平台支持:windows(Qt4), Linux(Qt4, tested on ubuntu 10.04), motorola ezx(Qt2, tested on ROKR E6)

project is here: http://qt-apps.org/content/show.php/qop?content=132430
这是我在qt-apps上的第一个程序。

原理:其实就是分析压缩解压工具的终端输出来计算进度并对其他量进行估计。暂时没有想到更好的办法。
缺点:当前显示的是之前一个文件处理完毕时的信息,而不是正在处理的文件的信息。没办法,因为是读取一行输出后才进行显示。无法与终端进行交互
bug: windows 下取消后7z进程无法结束
TODO:读取其他类型归档文件的uncompressed size和文件数以确定解压缩的进度条总步长,使命令行变得更加简单。tar.gz已解决。

usage: qop [-t parserFor] [-n|s] [-chm] [-x archieve|-T totalSteps] [files...]
-m: 另开一个进程来计算进度条总步长.
-h: help
-n: 设置总步长为文件数.
-s: 设置总步长为文件大小(默认).
-T steps: 设置总步长值.
-t parser: 通常为压缩解压工具的名字, 如tar, zip, unzip, unrar. 如果xz, lzop等结合tar使用, parser为tar. 缺省值 -t tar
-c: 处理完毕自动关闭窗口
-x archive: 解压模式。直接读取归档文件解压后的大小作为总进度条步长,忽略-T和 -t选项。目前只适用tar.gz文件,其他的解压还是要-T来指定步长

例子:

  1. tar zcvvf honey.tgz honey |qop hon* -m
  2. tar --use=xz -cvvf honey.txz honey |qop honey
  3. zip -ryv -9 -FS honey.zip honey |qop honey -m -t zip
  4. unzip -o honey.zip |qop -T `unzip -Z -t honey.unzip | sed 's/\(.*\) files.*/\1/'` -t unzip
  5. 7z x -y test.7z |qop -t7z -T $((`7z l test.7z |sed -n '$s/\(.*\), \(.*\)folders/\2/p'`+`7z l test.7z |sed -n '$s/\(.*\) \(.*\)files.*/\2/p'`))
  6. #7z的那个计算文件和文件夹总数的谁来写的更简洁些?输出最后一行为
  7.                                 2833677      1029657  75 files, 7 folders


0.1.0之后的版本显示解压tar.gz文件的进度变得更加简单
        tar zxvvf test.tar.gz |qop -x test.tar.gz


大家觉得好用的话给我的project加点分数! thx!

[ 此帖被novesky在2010-09-22 21:28重新编辑 ]
离线novesky

只看该作者 1楼 发表于: 2010-09-22
已更新,更加好用了。。。
快速回复
限100 字节
 
上一个 下一个