2013-03-26 103 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\名为批处理文件本身。