QT应用在windows系统下调用bat脚本,居然报错了。
该BAT脚本,是用来检查svn.exe这个命令行工具,是否在当前系统里存在。在cmd终端里,一直是可正常执行的。但是在windows7家庭中文版操作系统下,使用QT应用的QProcess来调用返回值就始终不对。
同样的应用可执行文件和bat脚本,在windows7旗舰版和windows10家庭中文版下运行正常!
调试了一段时间,始终没有找到根本原因。最后,使用替换的方法,直接使用如下代码,不再调用bat脚本。
QProcess process;
QString cmdString;
int retValue;
cmdString = "cmd.exe /c svn.exe help >nul";
retValue = process.execute(cmdString);
以上代码,在windows7旗舰版/windows7家庭中文版/windows10家庭中文版下都测试正常。当前系统下,svn.exe存在时,retValue为0;svn.exe不存在时,返回1。
总结:
1. 以上实现方法,也是在QT应用里检查当前系统是否已安装某命令工具的方式之一;
2. windows命令cmd.exe /c的使用详细信息,请另行查询;