windows系统上bat脚本使某一程序后台循环检测是否启动,没启动则启动

前言

有时候一个程序在windows服务器上启动,会出现命令提示符窗口,cmd那种黑框窗口。客户不懂,或者其他业务部门不懂,顺手给你关了。又或者程序崩溃了,程序直接结束运行了。让人苦恼。

下面两个bat文件,很好的解决了这个问题,只需要复制,修改一下相关地方就可以。

他的作用在于,在windows系统后台每隔几分钟循环Telnet程序端口是否被占用,未被占用就启动。占用,就不做任何操作。

一、先写一个检测端口状态而执行相应操作的bat脚本

需要修改:

1. “port=端口”,这里写需要检测的端口,例如“port=8080”,意为检测8080端口是否被占用。

2.“command=操作命令”,这里写需要操作的命令,例如启动某个jar包“java -jar YourJarFile.jar”。

@echo off
setlocal

set port=端口
set command=操作命令

echo Testing connectivity to localhost:%port%...

:: 使用 PowerShell 检查端口可达性
powershell -Command "$ErrorActionPreference = 'Stop'; $result = Test-NetConnection -ComputerName localhost -Port %port%; if ($result.TcpTestSucceeded) { exit 1 } else { exit 0 }"

if %errorlevel% equ 0 (
    echo Port %port% is not reachable.
    echo Executing command: %command%
    %command%
) else (
    echo Port %port% is reachable. Skipping command execution.
)

endlocal

 改完之后保存文件,名称为“startForTelnet.bat”。

解释:这个bat文件的意思为,Telnet该端口,如果该端口被占用,则不执行你设置的操作命令,如果端口未被占用(说明该程序未启动),则执行你设置的操作命令(一般操作命令设置为启动某个jar包或程序)

二、再写一个bat文件,循环执行上一个bat文件。

需要修改:

1.“targetScript=上一个脚本或程序的路径及名称”,例如:“targetScript=D:\test\startForTelnet.bat”,意为:执行D盘test文件夹里的startForTelnet.bat脚本(上一步脚本的名称)

2.如果想修改时间,可以修改timeout /t后面的120,这里意思为120秒(两分钟),多长时间执行一次可以自行修改

@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin

set "targetScript=上一个脚本或程序的路径及名称"

:loop
echo Calling %targetScript%...

:: 调用指定的批处理文件
call "%targetScript%"

:: 休眠120秒(2分钟)
timeout /t 120 /nobreak >nul

goto loop

解释:

        这个脚本意思为:每过两分钟执行一次,某路径下的某脚本或程序。并且隐藏命令提示符的窗口,为后台运行。

如何关闭:

        如果想结束该循环命令,关闭脚本。打开任务管理器,找到windows命令处理程序这条,选中结束任务即可

 

终言

二者组合后,只需要启动第二步的bat文件,便可后台一直循环检测端口是否被占用,如果没被占用,说明程序挂掉了或者被人为误关了,两分钟后进行启动该程序。如果端口已经被占用,说明程序还在,不执行任何操作。

之所以分开两个bat文件,是因为这样有了更多的操作性。有人可能需要第一步就足够了。也有人可能只想弄个后台循环,那么第二步bat文件足矣。

题外话:就这点东西,真心瞧不起还在csdn开收费的文章。

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值