Я написал командный файл, который проверяет, работает ли только один экземпляр сервера в любой момент времени. Сервер находится в общей папке в облаке, где у нескольких пользователей есть доступ к ней.Петля в партии не работает
Если сервер запущен, будет создан .txt-файл, и до тех пор, пока он есть, никто не может запустить сервер. Когда сервер выключается, файл .txt удаляется, а другой пользователь может снова запустить его.
minecraft_server.1.8.1.exe запускает процесс Java javaw.exe, который является процессом, который нам необходимо контролировать.
код выглядит следующим образом:
@echo off
IF EXIST *_RUNNING.txt (
echo "ERROR, SERVER ALREADY RUNNING as %computername%"
pause
EXIT
) ELSE (
copy NUL %computername%_RUNNING.txt
START /WAIT minecraft_server.1.8.1.exe
tasklist /FI "IMAGENAME eq javaw.exe" 2>NUL | find /I /N "javaw.exe">NUL
:loop
IF "%ERRORLEVEL%"=="0" (
TIMEOUT /t 60
GOTO loop
) ELSE (
del %computername%_RUNNING.txt
echo "Server ended."
pause
EXIT
)
)
Все работает, кроме петли. Он продолжает возвращаться ») было неожиданным в это время». Я новичок в написании пакетных файлов, поэтому, пожалуйста, помогите.
Большое спасибо, он работал как шарм. Помещение списка задач за пределы цикла было ужасной ошибкой, не могу поверить, что я пропустил это. Что касается меток и блоков, я не знал этого. –