windows服务器自启检测 frp服务器自启检测 数据自动备份
下载
点我下载
源码:
@echo off
rem windows服务器自启检测 frp服务器自启检测 数据自动备份 自动脚本by 蔡文洋V1.1
rem ================开发者的更新公告======================
rem V1.0自动启动服务器和Frp防崩自动重启
rem V1.1增加存档定时备份功能 更多的自定义选项
rem =====================================================================================================
rem *****************************************************
rem 脚本自定义设置区域
rem *****************************************************
rem =====================================================================================================
rem *****************************************************
rem 设置进程名称(默认守护process_name01游戏服务器和process_name02 Frp内网穿透服务不用更改)
rem 进程名在任务管理中可以查看
set process_name01="GameServer.exe"
set process_name02="frpc.exe"
rem 进程检测时间(单位:秒)(建议大于等于60因为自动存档会在同一分钟内反复操作 虽然影响不大... 而且也会自动覆盖)
set detection_interval=60
rem *****************************************************
rem *****************************************************
rem 设置游戏服务器启动路径(GameSever.exe)
set server_start_path="D:\GameServer\GameServer.exe"
rem *****************************************************
rem *****************************************************
rem 设置frp内网穿透启动路径(run.bat)
set frp_start_path="D:\Frp\run.bat"
rem *****************************************************
rem =====================================================
rem 自动备份设置
rem *****************************************************
rem 备份的文件夹路径(游戏服务器存档位置)
set server_save_path="D:\Game\saved"
rem 保存的目的地
set destination_path="D:\Game\saved_buckup"
rem 保存的时间间隔(单位:分)
set /A save_time_interval=30
rem *****************************************************
rem =====================================================
rem 以下是代码区域 只修改上面的
rem =====================================================
rem ====================================================================================================
rem 初始化时间信息
set /A last_save_time_m=%time:~3,2%
set last_save_time_all=检测到初次启动脚本--稍后自动存档
goto check
:auto_save
cls
echo 备份中...
echo.
rem xcopy会递归地复制整个文件夹以及其子文件夹和文件到目标文件夹中
rem `/E` 表示复制文件夹及其子文件夹和文件
rem `/I` 表示如果目标路径不存在并且包含多个文件或目录,则假设目标路径是要复制的文件,而不是询问用户是否要复制目录或多个文件
rem `/Y` 表示在复制过程中不会提示用户确认覆盖现有的目标文件。
start cmd /C "xcopy /E /I /Y %server_save_path% %destination_path%\"%date:~0,4%年%date:~5,2%月%date:~8,2%日_%time:~0,2%时%time:~3,2%分"_自动存档"
echo 备份成功(%destination_path%)
echo.
rem 记录上次存档时间
set /A last_save_time_m=%time:~3,2%
set last_save_time_all=%date:~0,4%年%date:~5,2%月%date:~8,2%日_%time:~0,2%时%time:~3,2%分
rem 等待3s
timeout /t 3 /nobreak >nul
rem 清屏
cls
goto wait_next
rem 设置循环点check检查点
:check
echo 正在启动防崩溃脚本
echo.
rem 等待1s
timeout /t 1 /nobreak >nul
echo ===================================================
echo 服务器自启检测_frp服务器自启检测_数据自动备份V1.1
echo ===================================================
echo.
echo 防崩溃脚本开启成功
echo ===================================================
echo 游戏服务器
echo Frp内网穿透服务
echo ===================================================
echo 已设置每%save_time_interval%分保存服务器存档一次
echo ===================================================
echo.
rem 等待1s
timeout /t 1 /nobreak >nul
rem 查找判断游戏服务器是否正常开启
tasklist | findstr /i %process_name01% >nul 2>&1
if errorlevel 1 (
echo 检测到游戏服务器未启动或意外关闭 3s后开启
echo.
rem 等待3s
timeout /t 3 /nobreak >nul
start "" "%server_start_path%"
echo 已成功启动游戏服务器
echo.
) else (
echo 游戏服务器运行正常...
echo.
)
rem 等待1s
timeout /t 1 /nobreak >nul
rem 查找判断frp服务是否正常开启
tasklist | findstr /i %process_name02% >nul 2>&1
if errorlevel 1 (
echo 检测到Frp服务未启动或意外关闭 3s后开启
echo.
rem 等待3s
timeout /t 3 /nobreak >nul
rem 开启frp服务
start cmd /k "call %frp_start_path%"
echo 已成功启动frp服务
echo.
) else (
echo Frp服务正常开启中...
echo.
)
rem 等待1s
timeout /t 1 /nobreak >nul
rem 当前检测时间
set /A check_time_m = %time:~3,2%
echo.
echo ===================================================
echo.
echo 当前检测时间:%date:~0,4%年%date:~5,2%月%date:~8,2%日_%time:~0,2%时%time:~3,2%分
echo.
echo 上次存档时间:%last_save_time_all%
echo.
rem 判断自动存档时间点
if %check_time_m% gtr %last_save_time_m% (
set /A temp_num_m =%last_save_time_m%+%save_time_interval%-%check_time_m%
) else if %check_time_m% lss %last_save_time_m% (
set /A temp_num_m =%last_save_time_m%-%check_time_m%-%save_time_interval%
) else (
set /A temp_num_m =0
)
echo 距离下次备份还有%temp_num_m%分
echo.
rem 存档点
if %temp_num_m% == 0 (echo 3s后自动备份存档 && timeout /t 3 /nobreak >nul && goto auto_save)
rem 等待下次检测点
:wait_next
rem 等待1s
timeout /t 1 /nobreak >nul
echo %detection_interval%s后进入下一次检测
echo.
rem 等待设定的秒数detection_interval后再次检测
timeout /t %detection_interval% /nobreak >nul
rem 清屏
cls
rem 进入下一次循环
goto check