我需要從由Windows內部的Qt應用程序調用的batch scrip(.bat)執行bash腳本的幫助。從.bat文件執行bash腳本,.bat文件由QT應用程序調用
問題概述:我需要通過Qt應用程序將文件從Windows傳輸到Linux,並在Linux內運行bash腳本來執行幾個命令。
我到目前爲止所做的事情:我可以通過Qt應用程序成功地將文件從Windows傳輸到Linux機器。 Qt的應用程序調用該
void Qt_intro101::on_file_upgrade_clicked()
{
QFileInfo fileInfo(ui->selected_file->text());
if(!fileInfo.exists())
{
QMessageBox::information(this, tr("Information"),
tr("Unable to find file for upgrading!"));
return;
}
// copying update
QString fileName = fileInfo.absoluteFilePath();
//Check if cmd.exe is present in Clients system and is located at correct path
QFileInfo cmdFile("C:\\Windows\\system32\\cmd.exe");
if(!cmdFile.exists())
{
QMessageBox::information(this, tr("Information"),
tr("Failed to find the cmd.exe ... Check cmd.exe is installed and is in C:\\Windows\\system32\\ !"));
return;
}
QStringList arguments ;
arguments << " /c" <<"c:\\temp\\upgradeTesting\\test.bat"<< fileName ;
QProcess *process = new QProcess(this);
process->start(cmdFile.absoluteFilePath(), arguments) ;
if(!process->waitForStarted())
{
QMessageBox::information(this, tr("Information"),
tr("Failed to start the process for upgrading!"));
return;
}
QMessageBox::information(this, tr("Information"),
tr("Please wait while system is upgrading .. click Ok to exit this box"));
qDebug() << fileName ;
process->waitForFinished() ;
qDebug() << process->readAllStandardOutput();
QMessageBox::information(this, tr("Information"),
tr("Upgradation is successful.. Please restart the system")) ;
process->deleteLater();
}
我已經writen批處理腳本(蝙蝠),它執行命令等
pscp -pw "lol" "%TARGET_UPDATE%" [email protected]"%TARGET_IP%":"%BASE_DIR%"/
爲了執行文件
例如傳送批處理文件bash腳本通過以下批處理文件是批處理文件中的命令
putty -pw "lol" -m test-update.sh [email protected]"%TARGET_IP%"
我甚至試過類似的東西
C:\\Program Files\\putty.exe -pw "lol" -m test-update.sh [email protected]"%TARGET_IP%"
難道你們,請讓我知道我在哪裏犯錯?
感謝和問候,
山姆
是你的權利英寸我忘記更改以更改代碼。我現在會推薦它。但仍然無法運行 – samantha
花了很多時間之後,我意識到我需要在批處理腳本中提供完整的路徑名,以便Qt執行它。沒有QT它工作正常,但如果我想通過QT應用程序運行批處理文件,那麼我想我需要給出完全合格的bash腳本的路徑名 – samantha