Java如何執(zhí)行cmd命令
Java執(zhí)行cmd命令
//當前絕對路徑 System.out.println(IoUtil.read(Runtime.getRuntime().exec("cmd /c echo %cd%").getInputStream(), Charset.forName("gbk"))); //創(chuàng)建文件夾 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"))); //創(chuàng)建文件 System.out.println(IoUtil.read(Runtime.getRuntime().exec("cmd /c type nul>barrier.db").getInputStream(),Charset.forName("gbk")));
Java執(zhí)行cmd命令總結(jié)
java執(zhí)行cmd命令,主要方法
Process p = Runtime.getRuntime().exec("cmd /c " + cmd命令, null, new File(execFileDir));
解釋一下參數(shù)
exec方法中參數(shù)
參數(shù)command:
- cmd /c cmd命令 代表執(zhí)行完cmd命令后cmd 命令窗口關閉
- cmd /k cmd命令 代表執(zhí)行完cmd命令后 cmd窗口繼續(xù)存在
參數(shù) envp:
- envp 為 null,那么子進程會繼承當前進程的環(huán)境設置。
參數(shù)file:
- 表示當前cmd命令在哪個路徑下執(zhí)行
- 當執(zhí)行完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命令的輸出信息
在執(zhí)行cmd命令的時候有些時候需要繼續(xù)執(zhí)行輸入y或者n 或者輸入密碼等參數(shù)的時候
暫時使用getOutStream的方式?jīng)]有實現(xiàn)
可以使用管道的方式實現(xiàn),
如 echo y| cmd命令
當需要連續(xù)輸出交互命令參數(shù)的時候可以使用echo的重定向
如需要輸入兩次y的時候
- echo y>yy.txt
- echo y>>yy.txt
- cmd命令<yy.txt
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java中l(wèi)ombok的@Builder注解的解析與簡單使用詳解
這篇文章主要介紹了Java中l(wèi)ombok的@Builder注解的解析與簡單使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01詳解在IDEA中使用MyBatis Generator逆向工程生成代碼
這篇文章主要介紹了詳解在IDEA中使用MyBatis Generator逆向工程生成代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06