如何在win服务器上面定时启动项目?
第一:写一个startForTelnet.bat的脚本
内容如下:
1. “port=端口”,这里写需要检测的端口,例如“port=8080”,意为检测8080端口是否被占用。
2.“command=操作命令”,这里写需要操作的命令,例如启动某个jar包“java -jar YourJarFile.jar”。
@echo off
setlocal
set port=9081
set command=java -jar tf-access-v1.0.5.jar
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
解释:这个bat文件的意思为,Telnet该端口,如果该端口被占用,则不执行你设置的操作命令,如果端口未被占用(说明该程序未启动),则执行你设置的操作命令(一般操作命令设置为启动某个jar包或程序)
第二:在写一个bat执行上面的那一个
1.“targetScript=上一个脚本或程序的路径及名称”,例如:“targetScript=D:\guangzhou\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=D:\guangzhou\startForTelnet.bat"
:loop
echo Calling %targetScript%...
:: 调用指定的批处理文件
call "%targetScript%"
:: 休眠120秒(2分钟)
timeout /t 120 /nobreak >nul
goto loop
解释:
这个脚本意思为:每过两分钟执行一次,某路径下的某脚本或程序。并且隐藏命令提示符的窗口,为后台运行。
如何关闭:
如果想结束该循环命令,关闭脚本。打开任务管理器,找到windows命令处理程序这条,选中结束任务即可
第三:直接在cmd启动项目(与上面两个无关)
cmd /c dir 是执行完dir命令后关闭命令窗口。
cmd /k dir 是执行完dir命令后不关闭命令窗口。
cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。
cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭。
执行完成之后不关闭窗口: