Skip to content

Instantly share code, notes, and snippets.

@wallopthecat
Forked from TheEagleByte/Server Manager.bat
Created June 17, 2017 22:27
Show Gist options
  • Save wallopthecat/09b261a423cf67758e8790055e5a0f72 to your computer and use it in GitHub Desktop.
Save wallopthecat/09b261a423cf67758e8790055e5a0f72 to your computer and use it in GitHub Desktop.
@echo off
COLOR 0B
TITLE Arma 3 Server Auto Restarter
SETLOCAL EnableExtensions enabledelayedexpansion
set EXE=arma3server_x64.exe
set /A restartCounter=0
rem Change this to the amount of Minutes you want the server to restart each time.
Set minutesToRestart=240
goto SelectServerType
:SelectServerType
cls
echo Arma 3 Server Launcher.
echo.
echo 1 - Default Server
echo.
set /P mod=Select Server Number:
if "%mod%"=="1" goto SetRestartTime
goto Server_Error
:Server_Error
cls
echo.
echo Invalid Server Code, Press Any Key To Enter Another One...
pause > NUL
goto SelectServerType
:SetRestartTime
cls
for /F "tokens=1-3 delims=:." %%a in ("%time%") do (
set timeHour=%%a
set timeMinute=%%b
set timeSeconds=%%c
)
set cTime=%timeHour%:%timeMinute%:%timeSeconds%
set /A newTime=timeHour*60 + timeMinute + %minutesToRestart%
set /A timeHour=newTime/60, timeMinute=newTime%%60
if %timeHour% gtr 23 set timeHour=0
if %timeHour% lss 10 set timeHour=0%timeHour%
if %timeMinute% lss 10 set timeMinute=0%timeMinute%
set restartTime=%timeHour%:%timeMinute%:%timeSeconds%
echo The server was started at %cTime% and will auto restart at %restartTime%.
goto StartArma3Server
:StartArma3Server
echo Starting Arma 3 Server, The server has been restarted %restartCounter% times.
if "%mod%"=="1" start /b arma3server_x64.exe -port=2302 "-config=server\server.cfg" "-cfg=server\basic.cfg" -world=Altis -noSound -noSplash -noPause -loadMissionToMemory -autoInit -enableHT
timeout 10 >nul
goto CheckServerRunning
:CheckServerRunning
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% goto ServerFound
goto ServerNotFound
:ServerFound
for /F "tokens=1-3 delims=:." %%a in ("%time%") do (
set timeHour=%%a
set timeMinute=%%b
set timeSeconds=%%c
)
set /A newTime=timeHour*60 + timeMinute
set /A timeHour=newTime/60, timeMinute=newTime%%60
if %timeHour% gtr 23 set timeHour=0
if %timeHour% lss 10 set timeHour=0%timeHour%
if %timeMinute% lss 10 set timeMinute=0%timeMinute%
set theCurrentTime=%timeHour%:%timeMinute%:%timeSeconds%
if %restartTime% LSS %theCurrentTime% goto KillRestartServer
timeout 10 >nul
goto CheckServerRunning
:ServerNotFound
echo server not found
timeout 5 >nul
goto SetRestartTime
:KillRestartServer
set /A restartCounter+=1
echo Please wait while the server is restarted.
timeout 1 >nul
taskkill /F /IM %EXE% >nul
timeout 15 >nul
goto SetRestartTime
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment