今天在做一個java呼叫windows的壓縮指令時遇到一奇怪問題程式碼如下:
複製代碼代碼如下:
String cmd ="C:/Program Files (x86)/WinRAR/rar.exe ac:/test.rar c:/test.log";
//System.out.println(cmd);
Process proc = Runtime.getRuntime().exec(cmd);
以上程式碼在Xp,win7,windows server2003執行完全正常發現將程式碼轉移到Windows Server2008之後,直接提示java異常。
經過二小時研究將以上程式碼修改如下:
複製代碼代碼如下:
String[] cmd ={"C:/Program Files (x86)/WinRAR/rar.exe", "a","C:/test.rar" ,"c:/test.log"};
//System.out.println(cmd);
Process proc = Runtime.getRuntime().exec(cmd);
就正常了。這樣寫還有個好處,可以解決檔案路徑中有空格等的問題