Qt-等待Qprocess完成

Qt-等待Qprocess完成,qt,command-prompt,qprocess,Qt,Command Prompt,Qprocess,我正在通过QProcess使用CMD,但我有一个问题 我的代码: QProcess process; process.start("cmd.exe"); process.write ("del f:\\b.txt\n\r"); process.waitForFinished(); process.close(); 当我没有为waitForFinished()传递参数时,它会等待30秒。执行CMD命令后,我想终止QProcess!不多也不少 您正在启动的进程是cmd.exe,它本身不会终止。如果

我正在通过
QProcess
使用CMD,但我有一个问题

我的代码:

QProcess process;
process.start("cmd.exe");
process.write ("del f:\\b.txt\n\r");
process.waitForFinished();
process.close();

当我没有为
waitForFinished()
传递参数时,它会等待30秒。执行CMD命令后,我想终止
QProcess
!不多也不少

您正在启动的进程是cmd.exe,它本身不会终止。如果使用参数调用cmd,则应实现您想要的:-

QProcess process;
process.start("cmd.exe \"del f:\\b.txt"\"");
process.waitForFinished();
process.close();
请注意,参数在引号中转义

或者,您可以在不使用cmd的情况下调用del进程:-

QProcess process;
process.start("del \"f:\\b.txt"\"");
process.waitForFinished();
process.close();
最后,如果你只想删除一个文件,你可以使用这个函数

QFile file("f:\\b.txt");
if(file.remove())
    qDebug() << "File removed successfully";
QFile文件(“f:\\b.txt”);
if(file.remove())

qDebug()您需要通过发送
exit
命令来终止cmd.exe,否则它将等待命令 以下是我的建议:

QProcess process;
process.start("cmd.exe");
process.write ("del f:\\b.txt\n\r");
process.write ("exit\n\r");
process.waitForFinished();
process.close();

为了完成,正如您的anwser演示的几种方法一样,我要添加一点,将-1传递到QProcess::waitForFinished不会触发任何超时,因为它等待的时间很长,也不起作用!这是一个示例代码。我想在其他作业中使用CMD而不是deleting如果您在其他任务中使用command,那么(在我看来)创建一个脚本并从QProcess调用它会更容易。@mohammaddrezaramezani与Merlin069的建议相同。创建一个批处理,运行它作为它的答案显示。@jbh我在第一篇文章中需要它的所有东西。我不使用上面提到的代码,等待完成命令prpmt completion not 30sechello亲爱的boussouira,非常感谢。工作!我把你的答案标为解决办法。