Frage

Ich verwende CMD von QProcess aber ich habe ein Problem.

Mein Code:

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

Wenn ich kein Argument dafür gebe waitForFinished() es wartet 30 Sekunden.Ich möchte kündigen QProcess nachdem der CMD-Befehl ausgeführt wurde!Nicht viel und nicht weniger!

War es hilfreich?

Lösung

Sie müssen die cmd.exe durch Senden beenden exit Befehl, sonst wartet es auf Befehle hier ist mein Vorschlag:

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

Andere Tipps

Der Prozess, den Sie starten, ist cmd.exe, der selbst nicht beendet wird.Wenn Sie cmd mit Argumenten aufrufen, sollten Sie das erreichen, was Sie wollen:-

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

Beachten Sie, dass die Argumente in Anführungszeichen gesetzt werden.

Alternativ können Sie den Del-Prozess ohne cmd aufrufen:-

QProcess process;
process.start("del \"f:\\b.txt"\"");
process.waitForFinished();
process.close();

Wenn Sie schließlich nur eine Datei löschen möchten, können Sie die verwenden QFile::remove Funktion.

QFile file("f:\\b.txt");
if(file.remove())
    qDebug() << "File removed successfully";
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top