2014-02-23 178 views
0

我正在嘗試啓動bat文件。該bat文件位於一個文件夾中。該文件夾包含所有可執行的jar文件。我試過這段代碼來啓動bat文件,但無法啓動。 。bat文件未啓動,bat文件位於文件夾

ProcessBuilder pb = new ProcessBuilder("C:\\Users\\user\\Desktop\\NetBeansProjects\\Genomic DataWarehouse Project\\biodwh.startBioDWH.bat"); 
    pb.redirectErrorStream(true); 
     Process p = pb.start(); 
     InputStream is = p.getInputStream(); 
     BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
     for (String line = br.readLine(); line != null; line = br.readLine()) 
     { 
       System.out.println(">" + line); 
     } 
     p.waitFor(); 
+0

當你說「無法」時,你是什麼意思。會發生什麼?你期望發生什麼?是否有錯誤訊息? – Behe

+0

根據我的經驗,我想指出,如果.bat文件沒有打開,它可能與您正在調用.bat文件的腳本無關。幾種不同類型的錯誤可能會導致.bat文件無法正常工作,或者它可能只是缺少一個可能使其看起來不能正常工作的暫停。爲了正確評估你的代碼,我們需要看看.bat文件裏面有什麼。由於看起來沒有任何其他答案適用於您,所以出現錯誤的.bat文件是我的第一本能。 – Brad

回答

0

嘗試使用此
調用Runtime.getRuntime()EXEC( 「CMD/C開始C:\用戶\用戶\桌面\的NetBeansProjects \基因組數據倉庫項目\ biodwh.startBioDWH.bat」);

+0

我沒有添加這一行,但它並沒有打開bat文件 – stella

+0

它適用於我.. 嘗試刪除您的bat文件名中的第一個點。 –

+0

對不起,但它不適合我,因爲bat文件是在一個文件夾中,該文件夾取決於那裏的可執行文件。 – stella

0

在蝙蝠中添加一行pushd %~dp0

這將改變當前驅動器和路徑bat文件之一。

+0

no這不是打開bat文件。 (ProcessBuilder pb = new ProcessBuilder(「C:\\ Users \\ user \\ Desktop \\ NetBeansProjects \\ Genomic DataWarehouse Project \\ biodwh.startBioDWH」),您需要在路徑末尾添加pushd%〜dp0 .batpushd%〜dp0「) – stella

+0

不,我告訴你修改蝙蝠(如果可以的話)文件來添加這行。任何.bat文件應該使用'%〜dp0'來處理路徑,這允許批處理文件始終工作它會從它的路徑內啓動,通過雙擊... – QuickFix

+0

對不起,但我不知道如何修改bat文件。因爲一旦我點擊bat文件startBioDWH.bat開始。 – stella

0

好吧,似乎我誤解了這個問題。

我認爲你不能直接執行批處理文件,但需要使用cmd.exe啓動它。嘗試添加cmd /c(與在後面加上一個空格)到新的ProcessBuilder行:

ProcessBuilder pb = new ProcessBuilder("cmd /c C:\\Users\\user\\Desktop\\NetBeansProjects\\Genomic DataWarehouse Project\\biodwh.startBioDWH.bat"); 

或OU可以嘗試執行批處理文件是這樣的:

String path="C:\\Users\\user\\Desktop\\NetBeansProjects\\Genomic DataWarehouse Project\\"; 
File dir = new File(path); 
Process process = Runtime.getRuntime().exec("cmd /c "+path+"biodwh.startBioDWH.bat", null, dir); 

或者你也可以把它縮短,如果你不需要從它所在的文件夾執行批處理文件

Process process = Runtime.getRuntime().exec("cmd /c C:\\Users\\user\\Desktop\\NetBeansProjects\\Genomic DataWarehouse Project\\biodwh.startBioDWH.bat");