GUN tar for windows Practice

来源:互联网 发布:linux搭建git服务器 编辑:程序博客网 时间:2024/05/21 07:52

windows 下调用gzip.exe 和tar.exe解压*.tar.gz压缩包到指定目录

如:解压D:/test/1.tar.gz 到E:/test/下

1.切换到压缩包所在目录下

cd /d D:

 

2.调用gzip.exe解压.gz压缩文件

gzip /test/1.tar.gz

 

3.调用tar.exe解包.tar

tar xvf /test/1.tar -C //./E:/test/

 

下面是我自己用QT写的解压函数,windows 和 linux 都适用。

#include <QtCore/QCoreApplication>#include <QFile>#include <QProcess>#include <QDebug>typedef int BOOL;#define RET_FAILED -1#define RET_SUCCESS 0BOOL Extract(QString fileName,QString dstPath){    if(fileName.length()<8 || fileName.right(7)!=".tar.gz")    {        qDebug()<<"Extract error:unknown file format,mast be '.tar.gz'";        return RET_FAILED;    }    if(dstPath.length() == 0)    {        return RET_FAILED;    }    int ret;    QProcess p;    fileName = fileName.replace("//","/");    qDebug()<<"Extrating "<<fileName<<" to "<<dstPath<<" ...";    if(fileName.at(1) == ':')    {        QString driveId = fileName.left(2);        fileName = fileName.right(fileName.length()-2);        p.execute("cd /d " + driveId);    }    qDebug()<<"start to ungzip "<<fileName<<" ...";    ret = p.execute("gzip -d " + fileName);    if(ret != 0)    {        qDebug()<<"gzip returns error code:"<<ret;    }    qDebug()<<"ungzip "<<fileName<<" success!";    fileName = fileName.left(fileName.length()-3);    if(dstPath.at(1) == ':')    {        dstPath = "//./" + dstPath;    }    qDebug()<<"start to untar "<<fileName<<" ...";    p.execute("tar xvf " + fileName + " -C " + dstPath);    if(ret != 0)    {        qDebug()<<"tar returns error code:"<<ret;    }    qDebug()<<"untar "<<fileName<<" success!";    QFile::remove(fileName);    return RET_SUCCESS;}


原创粉丝点击