编程语言
首页 > 编程语言> > 使用 Java 调用 cmd 命令

使用 Java 调用 cmd 命令

作者:互联网

使用 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  执行 无图形界面 软件,要用最后两种运行模式之一.

 

补充:

学生党,单纯做笔记使用,若有不足之处请指正,感激不尽!

标签:调用,Java,exec,getRuntime,cmd,command,java,运行
来源: https://www.cnblogs.com/youmiyou/p/15779230.html