开发者

Java如何执行cmd命令

开发者 https://www.devze.com 2023-01-09 10:43 出处:网络 作者: 苍穹之跃
目录Java执行cmd命令Java执行cmd命令总结解释一下参数 总结Jaandroidva执行cmd命令
目录
  • Java执行cmd命令
  • Java执行cmd命令总结
    • 解释一下参数 
  • 总结

    Jaandroidva执行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(python"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方法中参数

    Java如何执行cmd命令

    参数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) {
      javascript          builder.append(outputLine);
            }
    
        } catch (IOExceptijavascripton 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的方式没有实现

    可以使用管道的方式实现,

    如 e编程客栈cho y| cmd命令

    当需要连续输出交互命令参数的时候可以使用echo的重定向

    如需要输入两次y的时候

    • echo y>yy.txt
    • echo y>>yy.txt
    • cmd命令<yy.txt

    总结

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

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号