通过判断8080端口是否有进程在监听来启动tomcat
:RESTART
netstat -an | find /C "0.0.0.0:8080" > temp.txt
set /p num=<temp.txt
del /F temp.txt
if %num%==0 start /D "C:\utils\apache-tomcat-7.0.65\bin\" startup.bat
echo Wscript.Sleep WScript.Arguments(0) >sleep.vbs
cscript //b //nologo sleep.vbs 5000
goto RESTART
通过判断是否有Java进程在来启动tomcat,如果有多个Java程序可能会不准确
将
netstat -an | find /C "0.0.0.0:8080" > temp.txt
替换为
tasklist | find /C "java.exe" > temp.txt
可以增加进程的启动用户来增加进程判断的准确性
tasklist /FI "username eq administrator" | find /C "java.exe" > temp.txt
该脚本运行后会出现一个dos窗口,若觉得碍眼可以用记事本将下面保存为扩展名为.vbs的文件。其中guard.bat是上面批处理保存的文件名。两个文件放在同一目录下双击vbs文件后,守护进程就在后台运行了,但这样得通过资源管理器结束cmd进程才能停止守护进程。 最后的0代表隐藏窗口
set ws=WScript.CreateObject("WScript.Shell") ws.Run "guard.bat",0