gddhy

_(:з」∠)_ 加载中...
  • 主页
  • 归档
  • 工具
  • 关于
所有文章 友链

gddhy

_(:з」∠)_ 加载中...

  • 主页
  • 归档
  • 工具
  • 关于

使用Java调用cmd命令

2024-01-23
字数统计:763字 阅读时长≈2分

使用 java 调用 cmd 命令时,使用如下的代码(不需要导入其他库)

1
Runtime.getRuntime().exec(command); //command是需要运行的命令

但是呢,这样是运行不了的,要进行异常处理,或者将其抛出:

1
2
3
4
5
6
//这里选择异常处理
try {
Runtime.getRuntime().exec(command);
} catch (IOException e1) { // 改自己的异常类
e1.printStackTrace();
}

现在,可以运行exe文件,但是若运行 gpedit.msc devmgmt.msc 等工具无反应

解决办法是,设定cmd的运行模式(这不是java的语法,是cmd的程序参数):

1
2
3
4
5
#转至https://blog.csdn.net/liuyukuan/article/details/5974517
cmd /c command 执行完命令后关闭命令窗口。
cmd /k command 执行完命令后不关闭命令窗口。
cmd /c start command 会打开一个新窗口后执行命令,原窗口会关闭。
cmd /k start command 会打开一个新窗口后执行命令,原窗口不会关闭。

将命令改变后,就可以正常使用会弹出新窗口的工具了

但是,如果要调用出命令行及没有图型界面的工具或程序,则要用后面两个命令,不然不会弹出。

例如:

1
2
Runtime.getRuntime().exec("cmd /c  powershell");       // 无反应
Runtime.getRuntime().exec("cmd /c start powershell"); // 成功调出powershell

个人理解是: java会在后台运行一个终端,然后再运行输入的代码,但是这个终端是不会到前台的,所以没图形界面的程序虽然能运行,但是无法显示.

等等,那要怎么获取命令的返回值呢?

首先,Runtime.getRuntime().exec()会返回被调用的进程,我们需要获取这个进程

接着,再通过输入流,让java程序读取被调用程序的返回值,再将其输出便可

例如:

1
2
3
4
5
6
7
8
9
10
11
12
/* 记得引入java.io中的相关包 */
// 获取进程
Process process = Runtime.getRuntime().exec("cmd /c dir"); // 运行dir命令
// 获取进程的输入流 流的方向为(唤醒的进程 -> java程序)
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
// 若读取当前行不为空,就将其输出
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 将流关闭,避免浪费系统资源
reader.close();

此时,java程序就会打印出DIR命令的执行结果

但是注意,cmd不能加start参数,因为加上了会创建新的终端执行,java就得不到执行结果了

总结:

  1. java运行可执行文件,随意使用任意一种cmd运行方式

  2. 执行 *.msc 类文件,cmd要加上start参数(也就是后两种运行模式之一)开启新窗口.

  3. 想要得到运行的返回值,要先获取到进程,再得到它的输入流,并且cmd不能加上start参数,否则会在新的终端窗口执行.

个人感觉是:带GUI程序任意,终端程序后两种,要得到返回值的话前两种

补充:

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

转载自悠米呦-使用 Java 调用 cmd 命令

赏

谢谢你请我吃糖果

微信

扫一扫,分享到微信

微信分享二维码
关闭Windows自动更新
超详细的Java弹窗样式及使用教程【JOptionPane类详细使用教程】
目录,不存在的…
留言已关闭
:gddhy
© gddhy
Hexo Theme Yilia by Litten
  • 所有文章
  • 友链

tag:

  • Android
  • 软件分享
  • game
  • Hexo
  • JavaScript
  • 旧机博物馆
  • MIUI
  • Java
  • git
  • Termux
  • mtk
  • 原神
  • Win
  • Html
  • 安卓学习笔记

    缺失模块

  • Luminous' Home
  • 影子博客
  • 四次元领域
  • 初之音
  • Mr.Pumpkin
  • ZhaoQuinn 's Blog