如何使Java在同一命令提示符窗口中打开批处理文件
我正在尝试创建一个基于控制台的Java应用程序,它可以启动一些批处理脚本来完成其他一些不相关的事情。目前,我只想找到概念的证明
我尝试使用以下代码:
Runtime.getRuntime().exec("cmd /c start pathtomybatch.bat");
在我将其转换为.jar
文件并尝试执行它之前,这一切都很正常。然后它会在一个新的命令提示符窗口中打开批处理文件,我不希望它这样做。我想在运行Java程序的同一窗口中打开批处理文件。我在TechNet和SS64上读到了start
命令,发现显然将start
添加到start /b
会在同一个命令提示符窗口中打开程序。但是,当我尝试运行此功能时:
Runtime.getRuntime().exec("cmd /c start /b pathtomybatch.bat");
NetBeans对这两行代码都说BUILD SUCCESSFUL
,但当我尝试第二行代码时,没有打开命令提示窗口,批处理文件也无法启动
我想知道如何让Java在同一个命令提示符窗口中打开该批处理文件,而不必停止Java应用程序或等待它完成
另外,作为一个小小的额外请求,有人能告诉我是否可以对.exe
文件执行同样的操作吗
我使用的是Windows 7,但我希望这个应用程序能为使用Vista或更高版本的用户使用
# 1 楼答案
额外的窗口来自您启动的start命令。见https://www.windows-commandline.com/cmd-start-command/
更好的模式是使用
然后确保循环,直到p.exitValue()不再抛出异常(这意味着进程已退出),并在循环时将所有可用字节从p.getOutputStream()和p.getErrorStream()复制到系统。输出和/或系统。呃