2013-03-26 106 views
1

我從我的java程序啓動了一個批處理文件,這會停止一些tomcats,如果從命令行啓動該批處理,批處理本身就會工作。但從Java開始它不起作用,問題是批處理不會從持久的文件夾中調用。所以它找不到一些文件,我的問題是我如何切換到批處理所在的文件夾,然後啓動批處理,以便它從文件夾中運行並找到必要的文件。從java調用批處理需要從當前批處理文件文件夾啓動

例如批處理在於文件夾c:\ foobar的\ mybatch.cmd

這裏是我的代碼,目前如何批量將被從Java

public void startBatch(Path batchPath) { 

    if (batchPath == null) { 
     throw new IllegalArgumentException("cannot start batch without path to it"); 
    } 
    if (!Files.exists(batchPath)){ 
     throw new IllegalArgumentException("batch does not exist " + batchPath.toString()); 
    } 

    try { 
     log.info("starting batch " + batchPath.toAbsolutePath().toString()); 
     String command = "cmd.exe /c " + batchPath.toAbsolutePath().toString(); 
     Process p; 
     p = Runtime.getRuntime().exec(command); 

     p.waitFor(); 

     BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 

     String line = reader.readLine(); 
     while (line != null) { 
      log.info(line); 
      line = reader.readLine(); 
     } 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    // TODO Auto-generated method stub 

} 
+0

有什麼建議嗎?我能否以某種方式導航到批處理文件夾中,以便java從那裏調用它? – 2013-03-27 21:02:39

回答

0

你應該只是把cd c:\foobar\名爲批處理文件本身。