zoukankan      html  css  js  c++  java
  • GUN tar for windows Practice

    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 0
    
    BOOL 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;
    }


  • 相关阅读:
    centos 查看硬盘使用情况
    查看centos内存命令
    VS2008编译运行时出现“外部组件发生异常”错误的解决方法
    20170307-1
    20170307
    centos7安装配置git
    Git理解笔记3
    Git理解笔记2
    Git理解笔记1
    php-设计模式
  • 原文地址:https://www.cnblogs.com/yefengmeander/p/2887944.html
Copyright © 2011-2022 走看看