2013-05-06 165 views
0

我做了這段代碼來移動一個文件夾,然後將它鏈接到它的原始目的地。這個問題它完全工作,當我只是從eclipse嘗試它,但當它進入它自己的自執行jar它不會創建硬鏈接,但它會移動文件夾。代碼運行一個命令行,然後輸入命令。我不知道這個移動命令是否起作用,而不是另一個。請幫忙。 (Mklink命令)運行來自JAVA的CMD命令

import java.io.*; 
import javax.swing.JOptionPane; 

public class The_Cloud_Setup { 
    public static void main(String[] args) throws IOException 
    { 
     try { 
      String command = "c:\\cmd.exe"; 
      Runtime.getRuntime().exec(command); 
     } 
     catch (IOException e){ 
      JOptionPane.showMessageDialog(null , e.getMessage(), "End Result", 2); 
      System.err.println(e.getMessage()); 
     } 
     String[] StringMove = { "cmd.exe", "/c", "move"+" "+"\"C:/Users/%username%/Documents/My Games/Terraria/Players\""+" "+"\"C:/Users/%username%/Google Drive/Players\""}; 
     String[] StringMklink = {"cmd.exe", "/c", "mklink"+" "+"/d"+" "+"\"C:/Users/%username%/Documents/My Games/Terraria/Players\""+" "+"\"C:/Users/%username%/Google Drive/Players\""}; 
     Process ProcessMove = Runtime.getRuntime().exec(StringMove); 
     Process ProcessMklink = Runtime.getRuntime().exec(StringMklink); 
     BufferedReader VarMove = new BufferedReader(new InputStreamReader(ProcessMove.getInputStream())); 
     BufferedReader VarMklink = new BufferedReader(new InputStreamReader(ProcessMklink.getInputStream())); 
     String temp = ""; 
     while ((temp = VarMove.readLine()) != null) { 
      System.out.println(temp); 
     } 
     VarMove.close(); 
     VarMklink.close(); 
    } 
} 
+0

根據Java約定,您應該使用小寫字符來啓動變量名稱。 – 2014-08-06 17:04:58

回答

0

最有可能的,當你在本地運行,你的程序試圖執行mklink命令之前移動命令尚未完成。您不能在有現有文件夾的地方建立鏈接。

+0

是的,沒有,我只是將它摺疊成一個exe文件,我可以作爲管理員運行,並且它可以正常運行,但是非常感謝 – RexPRGMER 2013-05-08 21:48:59