从java初始化批处理脚本后退出

从java初始化批处理脚本后退出,java,process,batch-file,runtime,Java,Process,Batch File,Runtime,我想用java代码初始化一个批处理脚本。初始化后,我需要退出java程序,并希望批处理脚本继续执行。我怎样才能做到这一点。我使用运行时和进程来实现这一点。但它正在等待批处理脚本完成,然后再继续下一步。这是我试用过的示例程序 try { Runtime r = Runtime.getRuntime(); System.out.println("Executing process"); Process p = r

我想用java代码初始化一个批处理脚本。初始化后,我需要退出java程序,并希望批处理脚本继续执行。我怎样才能做到这一点。我使用运行时和进程来实现这一点。但它正在等待批处理脚本完成,然后再继续下一步。这是我试用过的示例程序

        try {
            Runtime r = Runtime.getRuntime();
            System.out.println("Executing process");
            Process p = r.exec("c:\\anoop\\ping.bat");
            System.out.println("Executed process"); 
            p.waitFor();
            System.out.println("Exiting with out :: ");
        } catch (Exception e) {// Catch exception if any
            System.err.println("Error: " + e.getMessage());
            e.printStackTrace();
        }
如果我使用p.exitValue(),它将给出错误java.lang.IllegalThreadStateException:进程尚未退出。简而言之,我只想初始化一个批处理脚本,然后退出java程序


谢谢,Anoop要获取流程的退出值,请使用:

int res = p.waitFor();
System.out.println("Exiting with out :: " + res);
如果希望进程继续,不要等待它(不要调用
wait()


如果进程需要输入或产生一些输出,那么您必须处理(最好在单独的线程上),因为所有I/O都被重定向。

谢谢您的回答。我试过了,但问题是我想执行一个批处理脚本,如果我没有给出waitFor(),它就不会被执行。还有其他方法可以执行批处理脚本吗?我认为您应该在命令中添加以下内容:“cmd/c start yourbatch.bat”嘿,这不是必需的。我刚想出来。不需要cmd。只需要在线程中添加100个睡眠时间。睡眠(100)就足够了。因为JVM将在命令提示符启动之前退出。非常感谢你的帮助