QT写入cmd命令并且调用,以及指定路径新建文件夹

本文介绍了如何使用QT库中的函数来创建和调用批处理命令。`cmd_xhh`函数用于将指定的CMD命令写入批处理文件,而`cmd_bat`函数则用于执行批处理文件。通过示例代码展示了如何生成CMD命令字符串并调用相应函数,以及在文件夹不存在时如何新建。此外,还提供了检查和创建目录的方法。
摘要由CSDN通过智能技术生成

.h头文件中

    void cmd_xhh(QString cmdstring,QString batname="Cmd_copy.bat");           //写入批处理命令使用的,第二个参数暂时写入了默认的
    void cmd_bat(QString batstring);           //调用bat文件使用

.cpp文件中

//写入批处理命令的函数
void TL_System::cmd_xhh(QString cmdstring,QString batname)     //写入批处理命令使用的
 {
     QFile file_cmd(batname);

     if(file_cmd.open(QIODevice::WriteOnly | QIODevice::Text))//以只写文本的方式打开
     {
         QTextStream  outstream_cmd(&file_cmd);   //把文件路径跟数据流链接起来
         outstream_cmd<<cmdstring;  //写入传入的命令
     }
     else
     {
         QMessageBox::warning(NULL,tr("文件写入错误"),tr("Cmd_copy.bat写入失败"),QMessageBox::Yes);
         return;  //函数返回
     }
 }

//调用批处理命令
void TL_System::cmd_bat(QString batstring)
 {
     QProcess p(nullptr);
//     QString curPath = QDir::currentPath();//获取当前应用程序目录
//     p.setWorkingDirectory(curPath);  //设置工作目录
//     QString toolpath = batstring;    //要调用的脚本文件
//     curPath.append(toolpath);       //添加脚本文件字符串

     p.start(batstring);              //运行脚本文件
     if(p.waitForFinished())
        {      //等待脚本运行完成,超时时间默认是3000s,超时返回0,正常返回1
             qDebug() << "完成!";
         }else
       {
             qDebug() << "bat运行错误!";
         }
       qDebug() << p.errorString();
 }

调用方法:

    QString curPath = QDir::currentPath();
    QString binPath = curPath + "/bin/bounce.exe";
    QString binPathToNat = QDir::toNativeSeparators(binPath);

    QString fileInPath = curPath +"/out/bellhop/"+fileName+".env";
    QString inPathToNat = QDir::toNativeSeparators(fileInPath);

    QString fileOutPath = curPath + "/out/bellhop/" + fileName+".prn";;
    QString outPathToNat = QDir::toNativeSeparators(fileOutPath);

    QString CmdString = QString("\"%0\" < \"%1\" > \"%2\"").arg(binPathToNat).arg(inPathToNat).arg(outPathToNat);
    QString CmdAimfile = curPath + "/out/bellhop/Cmd_copy.bat";
    cmd_xhh(CmdString,CmdAimfile);  //第二个参数默认为 Cmd_copy.bat
    cmd_bat(CmdAimfile);

这里CmdString是我想写入的CMD命令,CmdAimfile ,是我想创建调用CMD命令文件的路径,结果会在想要的路径下生成CMD命令
在这里插入图片描述
在这里插入图片描述
当文件夹不存在想新建文件夹使用下面的代码

     QDir dir;
       QString curPath = QDir::currentPath()+QString("/out/bellhop");//获取当前应用程序目录,并且添加文件夹

       // 检查目录是否存在,若不存在则新建
       bool exist =  dir.exists(curPath);  //检查是否存在文件夹
       if (!exist)
       {
           bool res = dir.mkpath(curPath);
           qDebug() << "新建目录是否成功" << res;
       }
       else{
           qDebug() << "文件夹是否已存在:"<<exist;
       }

新建文件夹有下面两个方法,一个是mkdir,必须上级目录是存在的
一个是mkpath,上级目录不存在也可以自动创建上级目录。
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值