如何在同一命令提示符窗口中使Java打开批处理文件

时间:2016-01-20 01:36:32

标签: java windows batch-file

我正在尝试创建一个基于控制台的Java应用程序,它启动一些批处理脚本来执行其他一些不相关的事情。目前,我只是想找到概念证明

我尝试使用以下代码:

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

这很好用,直到我把它变成.jar文件并尝试执行它。然后它在一个新的命令提示符窗口中打开批处理文件,我不希望它这样做。我想在运行我的Java程序的同一窗口中打开批处理文件。我在TechNetSS64上阅读了start命令,发现显然正在添加更改{{ 1}}到start会在同一个命令提示符窗口中打开程序。但是,当我尝试运行时:

start /b

对于这两行代码,NetBeans说Runtime.getRuntime().exec("cmd /c start /b pathtomybatch.bat"); ,但是当我尝试第二行代码时,没有打开命令提示符窗口,我的批处理文件也没有开始。

我想知道如何让Java在同一命令提示符窗口中打开该批处理文件,而无需停止Java应用程序或等待它完成。

此外,作为一个微小的额外请求,有人可以告诉我是否可以对BUILD SUCCESSFUL文件执行相同的操作吗?

我在Windows 7上,但我希望此应用适用于使用Vista或更新版本的用户。

1 个答案:

答案 0 :(得分:0)

额外的窗口来自您启动的启动命令。见https://www.windows-commandline.com/cmd-start-command/

更好的模式是使用

Process p = Runtime.getRuntime().exec("cmd /c pathtomybatch.bat"); 

然后确保循环直到 p.exitValue() 不再抛出异常(这意味着进程已退出),并在循环时将 p.getOutputStream() 和 p.getErrorStream() 中的所有可用字节复制到 System. out 和/或 System.err。