首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FiveM自动重启脚本

FiveM自动重启脚本
EN

Stack Overflow用户
提问于 2020-05-15 12:39:24
回答 1查看 9.1K关注 0票数 0

我正在尝试为我的FiveM服务器创建一个重新启动脚本,这是我到目前为止拥有的代码:

代码语言:javascript
复制
@echo off
:: Config

TITLE CFR FIVEM SERVER
set reboot1 = 00
set reboot2 = 06
set reboot3 = 12
set reboot4 = 18 

:: Logic

: start
echo [%time%] - Server Started!
start D:\Server\run.bat +exec server.cfg  
goto loop

: restart
echo [%time%] - Server Reboot
taskkill /f /im FXServer.exe >nul
timeout /t 10 >null
goto start

: loop
timeout /t 5 >null
set tps = %TIME:~-0,2%
echo %tps%
if %tps%==%reboot1% goto restart

if %tps%==%reboot2% goto restart

if %tps%==%reboot3% goto restart

if %tps%==%reboot4% goto restart

我希望它每6小时重新启动一次。例如: 00:00,06:00,12:00和6:00

当我运行它(启用echo )时,循环中的echo和if语句变量在控制台中显示为空。例如,控制台认为它的:if == goto restart

有人能帮我解决这个问题吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-05-17 13:36:00

除了我看不出为什么不在需要的时候从任务调度器运行D:\Server\run.bat,并且使用+exec server.cfg作为参数之外,我可能会对您似乎试图做的事情提供这种增强。

代码语言:javascript
复制
@Echo Off & SetLocal EnableExtensions
Title CFR FIVEM SERVER
Call :CheckIfRunning
If ErrorLevel 1 (Echo [%TIME%] Starting Server
    GoTo StartServer)

:GetHourMatch
Set "#=1" & For /F "Tokens=2Delims=: " %%G In (
    '"%__AppDir__%Robocopy.exe \: . /NJH /L|%__AppDir__%find.exe " 123""'
) Do Set /A "#=(1%%G%%25)%%6"
If %#% Neq 0 GoTo :EOF

:KillServer
%__APPDIR__%taskkill.exe /F /Im FXServer.exe >NUL

:Loop
If %#% Equ 11 (Echo [%TIME%] - Reboot Error
    GoTo :EOF)
%__APPDIR__%timeout.exe /T 3 /NoBreak >NUL
Call :CheckIfRunning
If ErrorLevel 1 (Echo [%TIME%] - Server Reboot
    GoTo StartServer)
Set /A #+=1
GoTo Loop

:StartServer
Start D:\Server\run.bat +exec server.cfg
GoTo :EOF

:CheckIfRunning
%__APPDIR__%tasklist.exe /Fi "ImageName Eq FXServer.exe"^
 /Fi "Status Eq Running" /Fo CSV /NH^
 | %__APPDIR__%findstr.exe /I "\"FXServer.exe\"">NUL && (
    Exit /B 0) || Exit /B 1

脚本的思想是,在启动时,它检查FXServer.exe是否正在运行,如果不是,它只是运行D:\Server\run.bat +exec server.cfg来启动它,然后关闭。如果它正在运行,它将检查时间( HH )是否为00061218,如果不是,则关闭脚本。

此时,如果脚本仍在运行,这意味着FXServer.exe正在运行,时间不是000612还是18,因此它会杀死试图杀死FXServer.exe的尝试。然后,它进入一个循环,检查FXServer.exe是否正在运行,以便再次启动它(在它停止之前,您不能启动它)。它将用10第二次间隔来检查这一点,以确保给它足够的时间来干净地杀死它。一旦检查表明它没有运行,D:\Server\run.bat +exec server.cfg就会运行,脚本就会关闭。如果经过10检查(大约30秒),它表示FXServer.exe仍在运行,将打印错误消息并关闭脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61819437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档