bat脚本如何在执行完后自动关闭?

bat脚本如何在执行完后自动关闭?,第1张

这个是不可能的,你的jar文件运行的载体是dos窗口,如果窗口真的关闭了,线程关闭,你的jar文件就停止运行了。

折衷的解决方式为,运行的dos窗口隐藏,

方法是编写vbs文件,步骤为:

在.bat文件" highlight="true">bat文件的同级目录下新建记事本文件,写如下代码:

Set ws = CreateObject("Wscript.Shell")

ws.run "cmd /c a.bat",vbhide

然后把记事本后缀名改为 vbs 保存,其中a.bat改为你的bat文件名。

其中vbhide是让dos窗口隐藏

但是有个问题,就是你的java被关闭后,cmd的进程依然存在,java进程也存在,

你可以用任务管理器看一下,可能有偏差,但是cmd进程一定存在。

不知道你为什么这么做,但还是尽量帮你一下吧。

        既然写了启动jar包的批处理文件,总不能一直到任务管理器里一个个找jar启动对应的进程吧,因此对应的写了一个关闭jar服务的批处理文件。

@echo off

title test

tasklist|find /i "test.exe"

if "%errorlevel%"=="1" (goto end) else (goto start)

:end

  echo 系统程序不存在!

  pause

  exit

:start

  echo 发现系统进程!

  echo 开始卸载系统进程......

  taskkill -f -t -im test.exe

  echo 卸载系统进程结束......

  pause

tasklist命令找到该程序的进程,taskkill杀掉该进程。

tomcat的启动、结束bat都是调用org.apache.catalina.startup.Bootstrap这个类实现的,startup.bat最终会执行Bootstrap.java里的

public void start() throws Exception {    

    if( catalinaDaemon==null ) init()

    

    Method method = catalinaDaemon.getClass().getMethod("start", (Class [] )null)    

    method.invoke(catalinaDaemon, (Object [])null)    

}

shutdown.bat最终会执行Bootstrap里的

public void stopServer() throws Exception {

    Method method = catalinaDaemon.getClass().getMethod("stopServer", (Class []) null)    

    method.invoke(catalinaDaemon, (Object []) null)    

}

你也可以这样写一个类来控制程序的启动、终止,bat就调用对应的方法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8102124.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存