Java如何执行cmd命令
作者:苍穹之跃 时间:2022-05-02 09:54:45
Java执行cmd命令
//当前绝对路径
System.out.println(IoUtil.read(Runtime.getRuntime().exec("cmd /c echo %cd%").getInputStream(), Charset.forName("gbk")));
//创建文件夹
System.out.println(IoUtil.read(Runtime.getRuntime().exec("cmd /c mkdir db").getInputStream(), Charset.forName("gbk")));
System.out.println(IoUtil.read(Runtime.getRuntime().exec("cmd /c cd db").getInputStream(), Charset.forName("gbk")));
//创建文件
System.out.println(IoUtil.read(Runtime.getRuntime().exec("cmd /c type nul>barrier.db").getInputStream(),Charset.forName("gbk")));
Java执行cmd命令总结
java执行cmd命令,主要方法
Process p = Runtime.getRuntime().exec("cmd /c " + cmd命令, null, new File(execFileDir));
解释一下参数
exec方法中参数
参数command:
cmd /c cmd命令 代表执行完cmd命令后cmd 命令窗口关闭
cmd /k cmd命令 代表执行完cmd命令后 cmd窗口继续存在
参数 envp:
envp 为 null,那么子进程会继承当前进程的环境设置。
参数file:
表示当前cmd命令在哪个路径下执行
当执行完cmd命令需要获取到cmd窗口打印信息的时候
InputStream is1 = p.getInputStream()
new Thread(() -> {
BufferedReader br = new BufferedReader(new InputStreamReader(is1, Charset.forName("GBK")));
try {
String outputLine = null;
while ((outputLine = br.readLine()) != null) {
builder.append(outputLine);
}
} catch (IOException e) {
logger.error("获取inputStream打印信息异常", e);
}
}).start();
InputStream is2 = p.getErrorStream();
BufferedReader br2 = new BufferedReader(new InputStreamReader(is2, Charset.forName("GBK")));
StringBuilder buf = new StringBuilder();
String line = null;
while ((line = br2.readLine()) != null) {
buf.append(line);
}
p.waitFor();
使用getInputStream和getErrorStream 获取到输入流, 获取到cmd命令的输出信息
在执行cmd命令的时候有些时候需要继续执行输入y或者n 或者输入密码等参数的时候
暂时使用getOutStream的方式没有实现
可以使用管道的方式实现,
如 echo y| cmd命令
当需要连续输出交互命令参数的时候可以使用echo的重定向
如需要输入两次y的时候
echo y>yy.txt
echo y>>yy.txt
cmd命令<yy.txt
来源:https://blog.csdn.net/wenxingchen/article/details/126264849
标签:Java,cmd,命令
0
投稿
猜你喜欢
深入浅析Mybatis的缺陷问题
2023-07-19 19:39:46
详解如何继承Mybatis中Mapper.xml文件
2022-12-22 14:48:34
C++实现LeetCode(159.最多有两个不同字符的最长子串)
2023-06-20 22:39:46
利用C#版OpenCV实现圆心求取实例代码
2022-10-28 12:51:48
java项目中使用 Lombok遇到的问题小结
2023-09-11 02:09:53
c#使用listbox的详细方法和常见问题解决
2023-08-27 11:28:56
新手初学Java流程控制
2023-08-23 08:12:34
java如何将一个float型数的整数部分和小数分别输出显示
2022-08-17 16:50:26
SWT(JFace) Menu、Bar...体验代码
2022-01-29 08:34:46
springcloud中Ribbon和RestTemplate实现服务调用与负载均衡
2022-06-30 14:58:45
java 读写文件[多种方法]
2022-10-04 09:09:00
Android 将网络的Url资源转换为Drawable资源方式
2023-06-23 03:06:19
java获取网络图片上传到OSS的方法
2023-10-14 23:01:07
Java聊天室之使用Socket实现传递对象
2023-02-07 15:28:52
Java 中的 String对象为什么是不可变的
2023-08-04 03:24:32
SpringBoot使用Thymeleaf自定义标签的实例代码
2023-11-24 21:41:29
什么是Java自旋锁
2022-09-22 22:10:55
SpringBoot整合支付宝APP支付
2021-10-12 02:57:24
java如何从不规则的字符串中截取出日期
2022-05-28 02:33:58
新手初学Java数组
2023-12-01 11:18:40