Java如何執(zhí)行cmd命令
Java執(zhí)行cmd命令
//當(dāng)前絕對(duì)路徑
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 命令窗口關(guān)閉
- cmd /k cmd命令 代表執(zhí)行完cmd命令后 cmd窗口繼續(xù)存在
參數(shù) envp:
- envp 為 null,那么子進(jìn)程會(huì)繼承當(dāng)前進(jìn)程的環(huán)境設(shè)置。
參數(shù)file:
- 表示當(dāng)前cmd命令在哪個(gè)路徑下執(zhí)行
- 當(dāng)執(zhí)行完cmd命令需要獲取到cmd窗口打印信息的時(shí)候
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命令的時(shí)候有些時(shí)候需要繼續(xù)執(zhí)行輸入y或者n 或者輸入密碼等參數(shù)的時(shí)候
暫時(shí)使用getOutStream的方式?jīng)]有實(shí)現(xiàn)
可以使用管道的方式實(shí)現(xiàn),
如 echo y| cmd命令
當(dāng)需要連續(xù)輸出交互命令參數(shù)的時(shí)候可以使用echo的重定向
如需要輸入兩次y的時(shí)候
- echo y>yy.txt
- echo y>>yy.txt
- cmd命令<yy.txt
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
VSCode中開發(fā)JavaWeb項(xiàng)目的詳細(xì)過(guò)程(Maven+Tomcat+熱部署)
這篇文章主要介紹了VSCode中開發(fā)JavaWeb項(xiàng)目(Maven+Tomcat+熱部署),本文分步驟通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
Java的Struts2框架配合Ext JS處理JSON數(shù)據(jù)的使用示例
這篇文章主要介紹了Java的Struts2框架配合Ext JS處理JSON數(shù)據(jù)的使用示例,包括將Ext JS中的JSON數(shù)據(jù)解析為列表的方法,需要的朋友可以參考下2016-03-03
Spring boot調(diào)用Oracle存儲(chǔ)過(guò)程的兩種方式及完整代碼
這篇文章主要給大家介紹了關(guān)于Spring boot調(diào)用Oracle存儲(chǔ)過(guò)程的兩種方式及完整代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Spring @Transaction 注解執(zhí)行事務(wù)的流程
這篇文章主要介紹了Spring @Transaction 注解執(zhí)行事務(wù)的流程,Spring 是如何開啟事務(wù)的?又是如何進(jìn)行提交事務(wù)和關(guān)閉事務(wù)的,本文給大家詳細(xì)介紹,需要的朋友可以參考下2021-06-06
MyBatis攔截器實(shí)現(xiàn)分頁(yè)功能實(shí)例
本篇文章主要介紹了MyBatis攔截器實(shí)現(xiàn)分頁(yè)功能實(shí)例,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。2017-04-04
最新Spring Security實(shí)戰(zhàn)教程之Spring Security安全框架指南
SpringSecurity是Spring生態(tài)系統(tǒng)中的核心組件,提供認(rèn)證、授權(quán)和防護(hù)機(jī)制,以保護(hù)應(yīng)用免受各種安全威脅,它支持多種認(rèn)證方式,并通過(guò)攔截器和過(guò)濾器鏈進(jìn)行安全檢查,本文通過(guò)搭建SpringBoot+SpringSecurity項(xiàng)目,幫助如何快速上手并應(yīng)用SpringSecurity,感興趣的朋友一起看看吧2025-03-03
基于Spring Boot DevTools實(shí)現(xiàn)開發(fā)過(guò)程優(yōu)化
這篇文章主要介紹了基于Spring Boot DevTools實(shí)現(xiàn)開發(fā)過(guò)程優(yōu)化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09

