JAVA調用CMD命令

原理:javaRuntime.getRuntime().exec(commandText)能夠調用執行cmd指令。 

cmd /c dir 是執行完dir命令後關閉命令窗口。 
cmd /k dir 是執行完dir命令後不關閉命令窗口。 

cmd /c start dir 會打開一個新窗口後執行dir指令,原窗口會關閉。 
cmd /k start dir 會打開一個新窗口後執行dir指令,原窗口不會關閉。 
注:增長了start,就會打開新窗口,能夠用cmd /?查看幫助信息。

以下舉例: 
1、從Dcopy一份文件到E盤。 
public static void main(String[] args) {
    try {
        String cmdStr = "cmd /c copy d:\\test.txt e:\\" ;
        Runtime.getRuntime().exec(cmdStr);
    }catch(Exception e){
        e.printStackTrace();
    }
}
注:這裏d盤下的目錄要用\\,若用d:/test.txt則會理解成同/c同樣的命令,而找不到文件路徑;故這裏能夠用file.getAbsolutePath(); 

2、刪除一個文件(注意是單個文件,非文件夾)這裏以上面copye盤的test.txt文件爲例。 
public static void main(String[] args) {
    try {
        String cmdStr = "cmd /c del e:\\test.txt" ;
        Runtime.getRuntime().exec(cmdStr);
    }catch(Exception e){
        e.printStackTrace();
    }
}

3、強制刪除e:/test文件夾下的全部文件夾及文件 
public static void main(String[] args) {
    try {
        String cmdStr = "cmd /c rd/s/q e:\\test" ;
        Runtime.getRuntime().exec(cmdStr);
    }catch(Exception e){
        e.printStackTrace();
    }
}
注:這裏主要是「rd/s/q」起到了做用,這樣不管test裏面有幾層文件夾,文件夾下有多少文件,都通通被強制刪除了。

調用系統命令,使用以下的一行代碼: 
Process process = Runtime.getRuntime().exec("cmd /c copy d:\\test.txt e:"); 
其 中,方法exec的參數就是你要調用的具體系統命令。由於copy自己不是一個可執行的exe文件,所以須要在前面添加cmd /c來啓動一個控制檯應用程序。而若要運行一個可執行程序,如執行我在F盤下的tomcat安裝文件,將命令寫爲:String cmdStr = "F:\\apache-tomcat-6.0.20.exe";  

調用批處理代碼
public static void main(String[] args) {   
    String path = "D:\\public.bat";   
    Runtime run = Runtime.getRuntime();   
    try {     
        Process process = run.exec("cmd.exe /k start " + path);   

        //將調用結果打印到控制檯上
        InputStream in = process.getInputStream();     
        while (in.read() != -1) {   
            System.out.println(in.read());   
        }   
        in.close();   
        process.waitFor();   
    } catch (Exception e) {            
        e.printStackTrace();   
    }   
}java

相關文章
相關標籤/搜索