今天在做一個java調用windows的壓縮命令時遇到一奇怪問題代碼如下:
復制代碼 代碼如下:
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);
以上代碼在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);
就正常了。這樣寫還有個好處,可以解決文件路徑中有空格等的問題