有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我尝试使用以下代码:

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

在我将其转换为.jar文件并尝试执行它之前,这一切都很正常。然后它会在一个新的命令提示符窗口中打开批处理文件,我不希望它这样做。我想在运行Java程序的同一窗口中打开批处理文件。我在TechNetSS64上读到了start命令,发现显然将start添加到start /b会在同一个命令提示符窗口中打开程序。但是,当我尝试运行此功能时:

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

NetBeans对这两行代码都说BUILD SUCCESSFUL,但当我尝试第二行代码时,没有打开命令提示窗口,批处理文件也无法启动

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

另外,作为一个小小的额外请求,有人能告诉我是否可以对.exe文件执行同样的操作吗

我使用的是Windows 7,但我希望这个应用程序能为使用Vista或更高版本的用户使用


共 (1) 个答案

  1. # 1 楼答案

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

    更好的模式是使用

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

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