1. 程式人生 > >Java呼叫Windows內cmd命令

Java呼叫Windows內cmd命令

很多情況下,在Windows進行操作時,直接使用cmd命令提示符會遠比通過Java實現簡便的多,所以我們可以通過使用Java呼叫cmd命令的方式來完成這一操作。

Java的Runtime.getRuntime().exec(commandStr)方法提供了呼叫執行cmd指令的實現。

cmd /c dir 是執行完dir命令後關閉命令視窗。 
cmd /k dir 是執行完dir命令後不關閉命令視窗。 
cmd /c start dir 會開啟一個新視窗後執行dir指令,原視窗會關閉。 

cmd /k start dir 會開啟一個新視窗後執行dir指令,原視窗不會關閉。

當我們需要刪除一個資料夾下所有的檔案時,File類裡的刪除方法delete()不能刪除非空的資料夾,必須通過一定的邏輯程式碼遍歷目錄下所有的檔案刪除,比較繁瑣,而使用cmd命令,只需要一行就可以實現了。

	/** 
	 * @Title: deleteAllFiles
	 * @Description: 將目錄下全部檔案刪除
	 * @param path: 目錄路徑(path = "D:\\Test\\Download\\")
	 * @return 
	 * @throws Exception     
	 */ 
	public void deleteAllFiles(String path){
		try {
			String cmd = "cmd /c del /s/q "+path+"\\*.*";
			Runtime.getRuntime().exec(cmd).waitFor();
			} catch (IOException e) {
			e.printStackTrace();
			} catch (InterruptedException e) {
			e.printStackTrace();
			}
	}
注:/s代表刪除所有子目錄及子目錄下檔案,/q代表刪除時不需再次確認,

移動操作

	/** 
	 * @Title: moveAllFiles
	 * @Description: 將原目錄下全部檔案複製到目標目錄,並刪除原檔案
	 * @param originpath: 原目錄路徑
	 * @param targetpath: 目標目錄路徑
	 * @return 
	 * @throws Exception     
	 */ 
	public void moveAllFiles(String originpath,String targetpath){
		try {
			String cmd = "cmd /c copy " + originpath + "\\* " + targetpath + "\\";
			Runtime.getRuntime().exec(cmd).waitFor();
			} catch (IOException e) {
			e.printStackTrace();
			} catch (InterruptedException e) {
			e.printStackTrace();
			}
		try {
			String cmd = "cmd /c del /s/q "+originpath+"\\*.*";
			Runtime.getRuntime().exec(cmd).waitFor();
			} catch (IOException e) {
			e.printStackTrace();
			} catch (InterruptedException e) {
			e.printStackTrace();
			}
	}
先執行了一遍複製命令,再刪除原檔案

這兩個例子幫助大家理解應用的方法,凡是cmd的命令都可以如此呼叫,是不是覺得方便了很多,希望這篇文章對你有幫助。