2012-07-11 37 views
0

我試圖添加版本控制到我的web服務器(在Windows上,我知道...),我需要使用批處理腳本來做自動添加和提交。以下是我現在有:將參數傳遞給批處理從java工作,但沒有結果

public static void bzr_add(String path, String commit) throws IOException { 
    ProcessBuilder pb = new ProcessBuilder(scripts + "bzr_add.bat", storage, path, "\"" + commit + "\""); 
    Process p = pb.start(); 
    String line; 
    BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream())); 
    while ((line = r.readLine()) != null) { 
     System.out.println(line); 
    } 
    r.close(); 
    try { 
     p.waitFor(); 
    } catch (InterruptedException ex) { 
     Logger.getLogger(local.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

隨着「腳本」是的目錄在腳本中可以發現,「存儲」的存儲目錄和「路徑」的新文件的路徑。

批處理腳本:

cd %1 
bzr add %2 
bzr commit -m %3 

而我得到:

Infos: C:\Program Files\glassfish-3.1.2\glassfish\domains\domain1>cd c:\storage_dir\ 
Infos: C:\storage_dir>bzr add dir\file.ext 
Infos: C:\storage_dir>bzr commit -m "commit_message" 

所以它似乎確定,當我複製這在cmd殼它的工作原理(它也可以當我做shell中的bzr_add.bat par1 par2 par3)。如果我修改腳本以創建新文件,則會在正確的目錄中創建它們,以便正確執行某些操作。

但是,當我通過java執行腳本時,集市似乎並不認同,有什麼猜測?

+0

你能解釋一下你的實際問題嗎? 「但是集市似乎不同意這個」是什麼意思? – bialix 2012-07-11 13:29:19

+0

你是否看到任何錯誤?也許還請檢查日誌文件 /.bzr.log – AmanicA 2012-07-11 13:34:18

回答

1

我找到了解決我自己的問題(雖然我不知道爲什麼我需要這樣做)。

我不得不將此行添加到我的批處理文件:

path = %PATH%;c:\Program Files\Bazaar\ 

這很奇怪,因爲它已經在路徑,當我用cmd.exe的,但它工作的方式。 也許它會幫助有同樣問題的人。

+0

很可能您的Java環境與cmd.exe環境不同。 – bialix 2012-07-12 10:04:03

相關問題