.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,上级目录不存在也可以自动创建上级目录。