此应用仅适用于Windows。它将在QT Creator中构建。我使用7zip.exe
作为示例,因为它非常快速且易于测试。
我有一个目录列表,每个目录包含一个*.exe
或*.msi
文件。
在pushbutton_clicked()
Qt
内,我想转到我指定的单个目录,并启动该目录中的任何可执行文件或*.msi
文件。 *.exe
或*.msi
文件名将不时更改,否则我可以简单地使用系统命令。
系统("启动7zip \ 7zip.exe / S");
我的麻烦是因为我想运行一个通配符,例如*.exe
或*.msi
并添加命令行开关。
我现在想要在路径中执行单个文件并添加参数/S
我在批处理文件中使用它:
for /F %%a in ('dir /b 7zip\*.exe') do SET app1=%%~na
%app1% /S
但我不确定如何在Qt
中实现它。
由于
答案 0 :(得分:0)
你想使用两件事:QDirIterator来迭代系统中的目录,QProcess来启动带参数的外部过程。
答案 1 :(得分:0)
感谢AlexanderVX
他们正是需要的。我确信有很多方法可以让它更优雅,但它确实完全符合我现在的要求。
void MainWindow::on_pushButton_clicked()
{
//set initial directory to search for the exe file
QDirIterator file("7zip", QDirIterator::Subdirectories);
while (file.hasNext())
{
file.next();
QString prog = file.fileName(); //get actual filename
QStringList cswitch;
cswitch << "/S"; //create the command switch to use when running the exe
QProcess *install = new QProcess(this); // create new process called install
QDir::setCurrent("7zip"); //set working directory needed to install the exe
install->start(prog, cswitch); //launch the exe with the desired command switch
}
}