使用java运行后退出批处理文件

使用java运行后退出批处理文件,java,batch-file,cmd,Java,Batch File,Cmd,我知道如何使用java代码启动批处理文件。 运行批处理文件时,会打开命令提示符。 要关闭命令提示符,我正在使用taskill/im cmd.exe。 但问题是,用于启动jboss的命令提示符也被关闭。 我想用一个特定的进程id终止cmd。 如何获取特定cmd promt的进程id并使用java杀死它使用cmd.exe/c job.bat运行批处理文件。/c开关执行命令,然后终止命令解释器。您不能将退出添加到批处理文件以退出其自己的命令提示符吗。仅仅关闭一个命令提示符,Uisng taskill似

我知道如何使用java代码启动批处理文件。 运行批处理文件时,会打开命令提示符。 要关闭命令提示符,我正在使用taskill/im cmd.exe。 但问题是,用于启动jboss的命令提示符也被关闭。 我想用一个特定的进程id终止cmd。
如何获取特定cmd promt的进程id并使用java杀死它

使用
cmd.exe/c job.bat
运行批处理文件。
/c
开关执行命令,然后终止命令解释器。

您不能将
退出
添加到批处理文件以退出其自己的命令提示符吗。仅仅关闭一个命令提示符,Uisng taskill似乎就有些过火了,你不这么认为吗


PS:我从来没有只在命令提示符下处理批处理文件,所以我假设它接受相同的命令。

如果使用Runtime.exec()启动批处理文件,它将返回一个进程对象。调用destroy()方法将终止该进程。

我也有同样的问题。我第一次使用

Runtime.getRuntime().exec("cmd.exe start /c test.bat");
然后我试着如下。它很好用

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

试试这个。

尽管这似乎是个老问题,可能已经解决了。。我为同一件事挣扎了很长时间。。这终于奏效了

String command = "cmd.exe /c build.bat";
Runtime rt = Runtime().getRuntime();
Process pr = rt.exec(command);

以下是有效的解决方案:要在执行批处理(.bat)文件中的命令后关闭命令窗口,需要在批处理文件的新行中添加“退出”(不带引号)。如果您想延迟执行,这是一种方法,它可以工作:

public class TestSleep 
{
    public static void main ( String [ ] args ) 
    {
         System.out.println("Do this stuff");
         try 
         { 
            Thread.currentThread().sleep(3000); 
         }
         catch ( Exception e ) { }
         System.out.println("Now do everything after this");
     } 
}

干杯你的主意不错。但问题是我想在15分钟后关闭它。如果我在批处理文件中给出exit,那么它将立即关闭。zach的回答也不会等待15分钟@abc:你们必须把这个技巧和“cmd/c”结合起来。我会把JBoss注册为一个服务。例如,请参见我编写的脚本: