为了账号安全,请及时绑定邮箱和手机立即绑定

如何从Java应用程序运行批处理文件?

如何从Java应用程序运行批处理文件?

海绵宝宝撒 2019-06-14 16:47:59
如何从Java应用程序运行批处理文件?在我的Java应用程序中,我希望运行一个批处理文件,该文件调用“scons -Q implicit-deps-changed build\file_load_type export\file_load_type"似乎我甚至无法让我的批处理文件执行。我没有主意了。这就是我在Java中所拥有的:Runtime.    getRuntime().    exec("build.bat", null, new File("."));以前,我有一个我想要运行的PythonSconscript文件,但是由于没有成功,所以我决定通过批处理文件调用脚本,但是该方法到目前为止还没有成功。
查看完整描述

3 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

批处理文件不是可执行文件。它们需要一个应用程序来运行它们(即cmd)。

在UNIX上,脚本文件具有shebang(#!)在文件开始时指定执行它的程序。Windows中的双击由Windows资源管理器执行。CreateProcess对此一无所知。

Runtime.
   getRuntime().
   exec("cmd /c start \"\" build.bat");

注:与start \"\"命令时,将打开一个带有空白标题的单独命令窗口,并在其中显示批处理文件的任何输出。它还应该只使用“cmd/c build.bat”,在这种情况下,如果需要,可以从Java的子进程读取输出。


查看完整回答
反对 回复 2019-06-14
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

有时候,线程执行进程的时间要高于JVM线程等待进程的时间,当您调用的进程需要一些时间来处理时,就会发生这种情况,请按照如下所示使用WaidFor()命令:

try{    
    Process p = Runtime.getRuntime().exec("file location here, don't forget using / instead of \\ to make it interoperable");
    p.waitFor();}catch( IOException ex ){
    //Validate the case the file can't be accesed (not enought permissions)}catch( InterruptedException ex ){
    //Validate the case the process is being stopped by some external situation     }

这样,JVM将停止运行,直到您正在调用的进程在线程执行堆栈继续运行之前完成为止。


查看完整回答
反对 回复 2019-06-14
  • 3 回答
  • 0 关注
  • 575 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信