Java調用cmd.exe命令

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

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

以下舉例:
一、從D盤copy一份文件到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();

二、刪除一個文件(注意是單個文件,非文件夾)。這裏以上面copy到e盤的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();
    }
}
三、強制刪除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();  
    }  
}
相關文章
相關標籤/搜索