Java如何执行cmd命令

目录
  • Java执行cmd命令
  • Java执行cmd命令总结
    • 解释一下参数
  • 总结

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java如何连续执行多条cmd命令

    java连续执行多条cmd命令 命令之间用&连接 例如: Process p = Runtime.getRuntime().exec("cmd /c d: & cd bin/"); java ssh登录执行多条cmd命令 java登录ssh执行多条命令,解决出现more自动回车的问题 import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import ja

  • Java执行cmd命令的举例与注意事项

    目录 eg1: 执行命令 eg2: 执行命令,并获取正常输出与错误输出 值得注意的是: 附java调用cmd命令实现各种操作 总结 通常 Java 执行 Windows 或者 Linux 的命令时,都是使用 Runtime.getRuntime.exec(command) 来执行的 eg1: 执行命令 public static void execCommand() { try { Runtime runtime = Runtime.getRuntime(); // 打开任务管理器,exec方法

  • Java 执行CMD命令或执行BAT批处理方式

    Java 执行CMD命令或执行BAT批处理 背景 日常开发中总能遇到一些奇怪的需求,例如使用java执行cmd命令或者bat批处理文件,今天就简单记录一下使用过程. 使用 废话不多说直接上代码 import java.io.BufferedReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; public class Cmder { /** * 执行一个cm

  • java 通过cmd 调用命令启动tomcat的操作

    我们有时候为了方便,公司会做一个项目管理,便于启动和关闭我们部署在服务器上面的项目,我这里就采用了java的方式,嗯......仅限于参考...... public static void main(String args[]) throws IOException { String exec = "C:/software/apache-tomcat-8.5.24/bin/startup.bat"; Runtime runtime = Runtime.getRuntime(); run

  • 解决Java执行Cmd命令出现的死锁问题

    目录 问题 原因及解决方法 方法封装 参考 问题 之前研究了Java通过执行cmd命令从而触发Android打包的思路,但是发现Android打包成功之后,后面的代码逻辑就不走了(连输出都没有) 经过了一天的排查,终于是从网上找到了解决方法 原因及解决方法 原因分析: 在上面提及了, process创建的子进程没有自己的控制台或终端,其所有的io操作都是通过(输入流.输出流.错误流)重定向到父进程中 如果该可执行程序的输入.输出或者错误输出比较多的话,而由于运行窗口的标准输入.输出等缓冲区有大小

  • Java如何执行cmd命令

    目录 Java执行cmd命令 Java执行cmd命令总结 解释一下参数 总结 Java执行cmd命令 //当前绝对路径 System.out.println(IoUtil.read(Runtime.getRuntime().exec("cmd /c echo %cd%").getInputStream(), Charset.forName("gbk"))); //创建文件夹 System.out.println(IoUtil.read(Runtime.getRunt

  • Java执行cmd命令两种实现方法解析

    一般java在执行CMD命令时,通常是使用Runtime.getRuntime.exec(command)来执行的,这个方法有两种细节要注意: 1.一般执行方法,代码如下,这种方法有时执行exe时会卡在那里. //一般的执行方法,有时执行exe会卡在那 stmt要执行的命令 public static void executive(String stmt) throws IOException, InterruptedException { Runtime runtime = Runtime.g

  • 解决java执行cmd命令调用ffmpeg报错Concat error - No such filter '[0,0]'问题

    最近公司有一个公交项目,要生成报站语音,采用的是 报站前缀 + 站点名 + 报站后缀,3个MP3文件拼接的方式,拼接成一个完整的语音,且需要转码率和比特率,使用到了ffmpeg. 去网上找了一些ffmpeg相关的命令,参考: 安装命令参考 音频转码: ffmpeg -i **.mp3 -ar 8000 -ac 2 -y -b:a 32k -vol 400 **.mp3 音频拼接: //音频拼接 (1) ffmpeg -i "concat:test4.mp3|180_out.mp3" -

  • Java代码执行shell命令的实现

    本文描述两种方式使用java代码执行shell命令,首先使用Runtime类调用exce方法,其次使用ProcessBuilder实例实现更灵活的方式. 1. 环境准备 执行shell命令之前,我们需要获取jvm底层操作系统,同时定义通用消费流的类. 1.1. 操作系统依赖 在创建进场执行shell命令之前,我们需要获取jvm运行在具体哪个操作系统之上.因为Windows执行shell命令是cmd.exe,而其他操作系统发布标准shell是sh: boolean isWindows = Syst

  • Java程序执行Cmd指令所遇问题记录及解决方案

    这篇是有关在编写Java程序执行Cmd指令时所遇到的问题记录,其中有一些是个人的理解,如有问题望不吝赐教,感谢❤ Windows 命令提示符(cmd.exe)是 Windows NT 下的一个用于运行 Windows 控制面板程序或某些 DOS 程序的shell程序 1.执行Cmd命令的两种方式 (1)RunTime.getRunTime().exec(多种重载方式) - 会得到一个Process对象通过其start()方法开启一个新进程以执行输入的指令. 这种方法就不多说了,最后这种形式还是用

  • PHP中执行cmd命令的方法

    本文介绍下,在php代码中执行cmd命令的方法,介绍下在php.ini文件中配置safe_mode参数支持命令执行的方法,有需要的朋友参考下. 说明: 本节内容在wamp包安装的环境实现. 首先,打开php.ini,关掉安全模式safe_mode = off,然后在看看 禁用函数列表 disable_functions = proc_open, popen, exec, system, shell_exec ,把exec去掉. php代码: 复制代码 代码如下: <?php exec("m

  • python隐藏终端执行cmd命令的方法

    在用pyinstaller打包后不想要后面的终端命令框,但是打包时加了-w或者--noconsole命令后会导致cmd程序不能运行从而出错.这个时候用subprocess可以解决该类问题. import subprocess cmd = 'your command' res = subprocess.call(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 这样打包后出

  • python脚本执行CMD命令并返回结果的例子

    最近写脚本的时想要用python直接在脚本中去执行cmd命令,并且将返回值打印出来供下面调用,所以特意查了下,发现主要有一下几种方式来实现,很简单: 就拿执行adb, adb shell, adb devices 举例 1.第一种方法 os 模块的 os.sysytem() import os os.system('adb) 执行括号中系统命令,没有返回值 2.第二种方法:os模块的 os.popen() if __name__=='__main__': import os a = os.pop

随机推荐