首页| 论坛| 消息

标题:压缩解压进度显示工具-9.22更新
作者:novesky
日期:2010-09-16 08:48
内容:

软件名: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]
-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来指定步长
例子:
tar zcvvf honey.tgz honey |qop hon* -m
tar --use=xz -cvvf honey.txz honey |qop honey
zip -ryv -9 -FS honey.zip honey |qop honey -m -t zip
unzip -o honey.zip |qop -T `unzip -Z -t honey.unzip | sed 's/\(.*\) files.*/\1/'` -t unzip
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'`))
#7z的那个计算文件和文件夹总数的谁来写的更简洁些?输出最后一行为
                                2833677     & ..


#1 [novesky 09-22 21:29]
已更新,更加好用了。。。

回复 发表
主题 版块