2014-02-23 141 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");