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 命令窗口關(guān)閉
- cmd /k cmd命令 代表執(zhí)行完cmd命令后 cmd窗口繼續(xù)存在
參數(shù) envp:
- envp 為 null,那么子進程會繼承當前進程的環(huán)境設(shè)置。
參數(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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
VSCode中開發(fā)JavaWeb項目的詳細過程(Maven+Tomcat+熱部署)
這篇文章主要介紹了VSCode中開發(fā)JavaWeb項目(Maven+Tomcat+熱部署),本文分步驟通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下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存儲過程的兩種方式及完整代碼
這篇文章主要給大家介紹了關(guān)于Spring boot調(diào)用Oracle存儲過程的兩種方式及完整代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Spring @Transaction 注解執(zhí)行事務(wù)的流程
這篇文章主要介紹了Spring @Transaction 注解執(zhí)行事務(wù)的流程,Spring 是如何開啟事務(wù)的?又是如何進行提交事務(wù)和關(guān)閉事務(wù)的,本文給大家詳細介紹,需要的朋友可以參考下2021-06-06
最新Spring Security實戰(zhàn)教程之Spring Security安全框架指南
SpringSecurity是Spring生態(tài)系統(tǒng)中的核心組件,提供認證、授權(quán)和防護機制,以保護應(yīng)用免受各種安全威脅,它支持多種認證方式,并通過攔截器和過濾器鏈進行安全檢查,本文通過搭建SpringBoot+SpringSecurity項目,幫助如何快速上手并應(yīng)用SpringSecurity,感興趣的朋友一起看看吧2025-03-03
基于Spring Boot DevTools實現(xiàn)開發(fā)過程優(yōu)化
這篇文章主要介紹了基于Spring Boot DevTools實現(xiàn)開發(fā)過程優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09

