qq_45086135
风逸飘
2021-03-08 12:18

QProcess::start()方法的参数不能使用使用通配符吗?

Ubuntu20.04系统下使用Qt 5.9,利用QProcess对象调用Linux系统的"zip"命令来压缩文件。

比如:/home目录下有多个日志文件:1.log、2.log、3.log……n.log。我想将这些日志文件打包到一个压缩包内。

 

终端命令行下可通过:zip logs.zip *.log  来实现。

 

但是,通过如下代码却无法实现。

#include <QGuiApplication>
#include <QDebug>
#include <QProcess>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);

    QProcess process;

    QString src = "*.log";        //含有通配符
//    QString src = "1.log";    //若不用*号通配符,该代码可以成功运行
   
    QString workPath = "/home/";
    QString zipfile = "logs.zip";    //压缩包文件名

    process.setWorkingDirectory(workPath); //cd workPath

    QStringList args;
    args << "-r" << zipfile  <<src;

    process.start("zip", args);

    while (false == process.waitForFinished(1000)) //每隔一秒判断是否压缩完毕
    {
        qDebug() << "压缩中...";
    }
  
    process.close();


    return app.exec();
}

是否有人解决这个问题呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答