Java执行cmd命令工具类
工具类:
public class CmdTask implements Runnable {
private String command;
private String dirPath;
public CmdTask(String dirPath, String command) {
this.dirPath = dirPath;
this.command = "cmd.exe /c " + command;;
}
@Override
public void run() {
Process process = null;
int exitVal = 0;
try {
process = Runtime.getRuntime().exec(command, null, new File(dirPath));
// Runtime.exec()创建的子进程公用父进程的流,不同平台上,父进程的stream buffer可能被打满导致子进程阻塞,从而永远无法返回。
//针对这种情况,我们只需要将子进程的stream重定向出来即可。
new RedirCmdStreamThread(process.getInputStream(), "INFO").start();
new RedirCmdStreamThread(process.getErrorStream(), "ERR").start();
exitVal = process.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
if (exitVal != 0) {
throw new RuntimeException("cmd任务执行失败");
}
}
class RedirCmdStreamThread extends Thread {
InputStream is;
String printType;
RedirCmdStreamThread(InputStream is, String printType) {
this.is = is;
this.printType = printType;
}
public void run() {
try {
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(printType + ">" + line);
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
}
工具类使用案例:
command = "cmd.exe /c ffmpeg -i video.m4s -i audio.m4s -codec copy " + abPath;
new CmdTask(videoPath,command).run();
Java执行cmd命令工具类的更多相关文章
- java执行cmd命令并获取输出结果
1.java执行cmd命令并获取输出结果 import java.io.BufferedReader; import java.io.InputStreamReader; import org.apa ...
- 如何使用Java执行cmd命令
用JAVA代码实现执行CMD命令的方法! Runtime rt = Runtime.getRuntime(); Process p = rt.exec(String[] cmdarray); ...
- Java执行cmd命令、bat脚本、linux命令,shell脚本等
1.Windows下执行cmd命令 如复制 D:\tmp\my.txt 到D:\tmp\my_by_only_cmd.txt 现文件如图示: 执行代码: private static void run ...
- 解决方案--java执行cmd命令ProcessBuilder--出错Exception in thread "main" java.io.IOException: Cannot run program "dir d:\": CreateProcess error=2(xjl456852原创)
当我尝试在java中通过ProcessBuilder运行window的cmd命令时出现错误: public static void main(String [] args) throws IOExce ...
- java执行cmd命令和linux命令
文章出处http://blog.csdn.net/xh16319/article/details/17302947 一:window下执行cmd指定 一:window下执行cmd指定 程序例子: [j ...
- JAVA执行cmd命令方法
package com.cmd; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStre ...
- Java执行CMD命令
参见:https://blog.csdn.net/lixingshi/article/details/50467840 public static void runtimeCommand() thro ...
- java中执行cmd命令
一.java执行cmd命令的三种方式:http://www.jb51.net/article/80829.htm 参考:https://www.cnblogs.com/zhufu9426/p/7928 ...
- Java 调用并执行cmd命令
cmd java 调用 执行 概要: Java 调用并执行cmd命令 Java | 复制 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2 ...
- JAVA之执行cmd命令
感言在前:时隔好久没有更新博客园了,忙东忙西也没忙出个什么之所以然来.回首过去一两个月,只能用“疲倦”两个字来形容,而且是身心疲惫.每天11.12个小时的工作我都没觉得烦,但是总是想克服却又很难克服的 ...
随机推荐
- [Err] [Dtf] 1044 - Access denied for user 'root'@'localhost' to database 'information_schema'
在从Oracle向mysql数据库传输数据时,报出来这个错误,原因是因为没有打开mysql数据库,在navicat里打开mysql,并选中要传输的数据库 再重复传输一下即可
- Python的入门学习Day 28~30——form”夜曲编程“
Day 28 in Day 29 time: 2021.8.26. 时间模糊了界限,虽我日渐走远.转眼而过的二十多天,既留下了夏天在沙滩上的足迹,同时也为黄金色的秋日铺上留白的画卷.键盘敲时,熟悉 ...
- Generamba构建模板,让开发变得更高效
Generamba Generamba:是为使用 Xcode 而设计的代码生成器.它主要设计用于生成 VIPER 模块,但很容易自定义模板以生成任何其他模板(在 Objective-C 和 Swift ...
- REST开发(1)
REST风格 REST简介 Rest(Representational State Transfer),表现形式状态转换(访问网络资源的形式) 传统风格资源描述形式 http://localhost/ ...
- docker安装postgres并启用postgis扩展
镜像 查看所有镜像 docker images 可以直接拉取postgis镜像 docker pull postgis 也可以在已有镜像上安装postgres,再启用扩展: docker pull p ...
- build opencv with qt to make debugging easier
最近发现使用自己编译的opencv,可以增强opencv的imshow函数功能.从哪里得到的线索已经忘记了.可能是无意中发现的某一张截图吧. 要实现cv::imshow函数功能增强,需要在cmake中 ...
- 网线接口调试,Android ADB网络调试!
ADB网络调试,网线接口调试 没有USB接口,照样可以调试,可通过网线接口调试步骤! 一.第一步连接WIFI 查看wifi 的IP win+R 键 打开运行 ,输入cmd 二.输入ipc ...
- Jenkins自动化部署(linux环境)---代码提交触发Jenkins构建
1.在工程中点击构建触发器中选择Generic Webhook Trigger,填写token 2.gitee配置Webhook 选择gitee项目中的Settings->Webhooks> ...
- mmdetection3d安装
conda create -n openmmlab python=3.7 -y conda activate openmmlab pip install torch==1.8.1+cu101 torc ...
- prometheus Alertmanager webhook
一.自定义邮件告警 二.使用docker部署微信机器人告警 1.制作镜像 2.启动容器和指定webhook容器 一.自定义邮件告警 在alertmanager服务的配置文件中指定自定义告警文件 # ...