Java調用Windows命令

來源:互聯網
上載者:User

標籤:批次檔   批處理   java   cmd   exe   

Java調用Windows命令 Java調用Windows命令主要用到兩個類: java.lang.Runtime
每個 Java 應用程式都有一個 Runtime 類執行個體,使應用程式能夠與其啟動並執行環境相串連。可以通過 getRuntime 方法擷取當前運行時。應用程式不能建立自己的 Runtime 類執行個體。 java.lang.Process
ProcessBuilder.start() 和 Runtime.exec 方法建立一個本機進程,並返回 Process 子類的一個執行個體,該執行個體可用來控制進程並擷取相關資訊。Process 類提供了執行從進程輸入、執行輸出到進程、等待進程完成、檢查進程的退出狀態以及銷毀(殺掉)進程的方法。 對於帶有 Process 對象的 Java 進程,沒有必要非同步或並發執行由 Process 對象表示的進程。

下面是個簡單例子:
package test;import java.io.IOException;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;/** * Java調用Windows命令測試 * @author liuyazhuang * */public class Test {public static void main(String args[]) {        testWinCmd();        dirOpt();    }    public static void testWinCmd() {        System.out.println("------------------testWinCmd()--------------------");        Runtime runtime = Runtime.getRuntime();        System.out.println(runtime.totalMemory());        System.out.println(runtime.freeMemory());        System.out.println(runtime.maxMemory());        System.out.println(runtime.availableProcessors());   //處理器數        try {            //執行一個exe檔案            runtime.exec("notepad");            runtime.exec("C:\\Program Files\\Microsoft Office\\OFFICE11\\winword.exe c:\\test.doc");            //執行批處理            runtime.exec("c:\\x.bat");            //執行系統命令            runtime.exec("cmd /c dir ");            runtime.exec("cmd /c dir c:\\");//            //-------------- 檔案操作 --------------            runtime.exec("cmd /c copy c:\\x.bat d:\\x.txt");   //copy並改名            runtime.exec("cmd /c rename d:\\x.txt x.txt.bak"); //重新命名            runtime.exec("cmd /c move d:\\x.txt.bak c:\\");    //移動            runtime.exec("cmd /c del c:\\x.txt.bak");          //刪除            //-------------- 目錄操作 --------------            runtime.exec("cmd /c md c:\\_test");          //刪除        } catch (IOException e) {            e.printStackTrace();        }    }     /**     * 執行批次檔,並擷取輸出資料流重新輸出到控制台     */    public static void dirOpt() {        System.out.println("------------------dirOpt()--------------------");        Process process;        try {            //執行命令            process = Runtime.getRuntime().exec("c:\\x.bat");            //取得命令結果的輸出資料流            InputStream fis = process.getInputStream();            //用一個讀輸出資料流類去讀            BufferedReader br = new BufferedReader(new InputStreamReader(fis));            String line = null;            //逐行讀取輸出到控制台            while ((line = br.readLine()) != null) {                System.out.println(line);            }        } catch (IOException e) {            e.printStackTrace();        }    }}

x.bat
del c:\del.txtcd D:dir

運行結果:
------------------testWinCmd()--------------------20316161652120666501122------------------dirOpt()--------------------D:\_dev_stu\fileopt>del c:\del.txt  D:\_dev_stu\fileopt>cd D:  D:\_dev_stu\fileoptD:\_dev_stu\fileopt>dir磁碟機 D 中的卷是 DISK1_VOL2卷的序號是 70FB-DFAFD:\_dev_stu\fileopt 的目錄2008-07-18  09:30    <DIR>          .2008-07-18  09:30    <DIR>          ..2008-07-18  09:30    <DIR>          src2008-07-18  09:31               549 fileopt.iml2008-07-18  09:31            10,292 fileopt.ipr2008-07-18  14:27    <DIR>          classes2008-07-18  16:42            26,265 fileopt.iws               3 個檔案         37,106 位元組               4 個目錄  8,095,498,240 可用位元組Process finished with exit code 0



Java調用Windows命令

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.