當Java需要調用windows系統進行交互時,可以使用Runtime進行操作。
例子:
1、調用window中獲取關於java相關的進行信息
Runtime rt = Runtime.getRuntime(); Process p = rt.exec("wmic process where caption=\"javaw.exe\" get caption,commandline /value"); BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = null; while((line=br.readLine())!=null){ System.out.println(new String(line.getBytes(), "GBK")); } br.close(); System.out.println("over");
顯示結果如下:
2、在java中查詢windows中端口 :80
Runtime rt = Runtime.getRuntime(); Process p = rt.exec("cmd /k netstat -an | findstr :80"); // OK BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = null; while((line=br.readLine())!=null){ System.out.println(new String(line.getBytes(), "GBK")); } br.close(); System.out.println("over");
結果為:
3、執行bat文件
Runtime rt = Runtime.getRuntime();
rt.exec("cmd /k start d:/Run/hello.bat");
注意:在編寫的簡單的bat,可以按照上述方式執行,但是:當hello需要依賴外部環境變量時不行
比如我需要啟動tomcat來發布一個web
rt.exec("cmd /k start d:/Run/Tomcat/bin/startup.bat");//會報錯
// 當使用exec需要執行多條命令時,使用&&進行拼接 rt.exec("cmd /k d: && cd d:/Run/Tomcat/bin && startup.bat");//OK
cmd /c dir 是執行完dir命令后關閉命令窗口。 cmd /k dir 是執行完dir命令后不關閉命令窗口。 cmd /c start dir 會打開一個新窗口后執行dir指令,原窗口會關閉。 cmd /k start dir 會打開一個新窗口后執行dir指令,原窗口不會關閉。