原理:java的Runtime.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、從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();
2、刪除一個文件(注意是單個文件,非文件夾)。這裏以上面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();
}
}
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