.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,正常返回1qDebug() << "完成!";}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.batcmd_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,上级目录不存在也可以自动创建上级目录。