使用 java 调用 cmd 命令时,使用如下的代码(不需要导入其他库)
Runtime.getRuntime().exec(command); //command是需要运行的命令
但是呢,这样是运行不了的,要进行异常处理:
try { Runtime.getRuntime().exec(command); } catch (IOException e1) { // 改自己的异常类 e1.printStackTrace(); }
现在,可以运行exe文件,但是若运行 gpedit.msc devmgmt.msc 等工具无反应
解决办法是,设定cmd的运行模式(这不是java的语法,是在cmd中设置):
#转至https://blog.csdn.net/liuyukuan/article/details/5974517 cmd /c command 执行完命令后关闭命令窗口。 cmd /k command 执行完命令后不关闭命令窗口。 cmd /c start command 会打开一个新窗口后执行命令,原窗口会关闭。 cmd /k start command 会打开一个新窗口后执行命令,原窗口不会关闭。
将命令改变后,就可以正常使用会弹出新窗口的程序了
但是,现在只能使用有图形界面的程序,如果要调用出命令行及没有图型界面的程序,则要用下面两个命令,不然不会弹出。
例如:
Runtime.getRuntime().exec("cmd /c powershell"); // 无反应 Runtime.getRuntime().exec("cmd /c start powershell"); // 成功调出powershell
个人理解是: java会在后台运行一个控制台,然后再运行输入的代码,但是这个控制台是不会到前台的,所以没图形界面的程序虽然能运行,但是无法显示.
至于为什么不能运行 *.msc 等工具,还不是很清楚
总结:
1. java运行 可执行文件,使用如下代码(也可以加上运行模式)
try { Runtime.getRuntime().exec( exeName ); // 将 exeName 改成 应用程序名 } catch (IOException e1) { // 改自己的异常类 e1.printStackTrace(); }
2. java 执行 *.msc 类文件,要加上前面四种运行模式的一种.
3. java 执行 无图形界面 软件,要用最后两种运行模式之一.
补充:
学生党,单纯做笔记使用,若有不足之处请指正,感激不尽!