在JAVA WEB 项目中, 通过调用restart.bat批处理文件, 实现Tomcat重启问题

问题: 在JAVA WEB 项目中, 通过调用restart.bat批处理文件, 实现Tomcat重启问题
环境: Tomcat7 java1.8 windows10
背景: 启动Tomcat可以使用bin目录下的 startup.bat 进行启动,但是会有黑窗口,误触会导致项目停止运行,所以把Tomcat配置成了windows服务,使用windows服务启动。当使用服务的方式启动项目后,使用 Process process = Runtime.getRuntime().exec(“cmd /c start restart.bat”); 的方式执行restart.bat文件进行tomcat的重启,tomcat只能关闭启动不了; 但是双击执行 restart.bat 文件或者 使用 startup.bat 方式启动项目再执行restart.bat文件都是可以实现tomcat的重启, 为什么以服务的方式实现不了?
restart.bat源码


```bash
@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"

d:
cd \project\Tomcat1\bin
call shutdown.bat
ping -n 10 127.0.0.1
set port=8080
set pid=0
for /f "tokens=2,5" %%b in ('netstat -ano ^| findstr ":%port%"') do (
    set temp=%%b
    for /f "usebackq delims=: tokens=1,2" %%i in (`set temp`) do (
        if %%j==%port% (
            taskkill /f /pid %%c
            set pid=%%c
            echo 端口号【%port%】相关进程已杀死
        ) else (
            echo 不是本机占用端口【%port%】
        )
    )
)
if !pid!==0 (
   echo 端口号【%port%】没有占用
)
echo 操作完成
ping -n 10 127.0.0.1
net start Tomcat7
exit

java代码
Process process = Runtime.getRuntime().exec(“cmd /c start restart.bat”);

```

自己调用命令的方式去重启,可能是程序中还有进城没结束,比如有一些自己定义的线程之类的