參考博客: https://www.cnblogs.com/jing1617/p/6430141.html
最近一段時間用到了Java去執行window下的bat腳本, 這里簡單記錄一下:
我這里是先判斷bat腳本是否存在, 然后去決定是否執行bat腳本,
直接上代碼:
下面是我測試的bat腳本, 就輸出一句話, 把文件命令為PostStartupScript.bat:
echo "hello word"
package com.test; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub String batPath = "C:/Philips/SIServer/PostStartupScript.bat"; // 把你的bat腳本路徑寫在這里 File batFile = new File(batPath); boolean batFileExist = batFile.exists(); System.out.println("batFileExist:" + batFileExist); if (batFileExist) { callCmd(batPath); } } private static void callCmd(String locationCmd){ StringBuilder sb = new StringBuilder(); try { Process child = Runtime.getRuntime().exec(locationCmd); InputStream in = child.getInputStream(); BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(in)); String line; while((line=bufferedReader.readLine())!=null) { sb.append(line + "\n"); } in.close(); try { child.waitFor(); } catch (InterruptedException e) { System.out.println(e); } System.out.println("sb:" + sb.toString()); System.out.println("callCmd execute finished"); } catch (IOException e) { System.out.println(e); } } }
運行結果如下:
batFileExist:true sb: D:\TestJava>echo "hello word" "hello word" callCmd execute finished
這里是在不打開任何窗口下運行的, 非常適合那些在后台需要執行bat腳本的程序.
如果想讓程序打開窗口去運行bat腳本, 可以使用如下的命令:
java的Runtime.getRuntime().exec(commandStr)可以調用執行cmd指令.
cmd /c dir 是執行完dir命令后關閉命令窗口. cmd /k dir 是執行完dir命令后不關閉命令窗口. cmd /c start dir 會打開一個新窗口后執行dir指令, 原窗口會關閉. cmd /k start dir 會打開一個新窗口后執行dir指令, 原窗口不會關閉.
例如下圖, 輸入 cmd /k start C:/Philips/SIServer/PostStartupScript.bat
然后會彈出新的窗口, 執行bat腳本.
