最近需要在C++里调用一些外部的程序和cmd命令,但是始终没有找到适合的方法。用了WinExec等,但似乎对我的程序不太友好,要么闪退,要么执行不了…
但是,用WinExec却可以很好的执行Bat,并且使用Bat间接执行的程序也可以正常运行。
@echo off
set command=%1
%command:~1,-1%
%command:~1,-1%
是用来截取字符串的,将字符串首尾的字符截掉。所以,在C++中就可以这样:
WinExec("cmd.exe /c run.bat \"命令\"");
并且可以传递参数。
但是,用Bat一样会弹出黑框。这时候可以用Bat转Exe的软件,比如Bat to exe converter。转换前,可以在EXE-FORMAT菜单里选择位数和是否有DOS框。
把代码里的run.bat换成exe即可。效果是一样的。用G++加上 -mwindows
也不会弹出黑框。
虽然这个方法不是很完美,但在找到更合适的方法前也能凑合用吧。