1

Итак, я хочу создать пакетный файл для моего сервера Minecraft для запуска, а затем перезапускать сервер в конце каждого дня (желательно в полночь, но также работает 24-часовой период)

Это мой загрузочный пакет, который вызывает другие пакетные файлы, чтобы открыть и запустить серверы по отдельности:

start cmd /k call BungeeStartup.bat
start cmd /k call HUBStartup.bat
start cmd /k call PvEStartup.bat
start cmd /k call PvPStartup.bat
start cmd /k call MinigamesStartup.bat
start cmd /k call TownyStartup.bat
start cmd /k call SecQStartup.bat

И каждый «Startup.bat» вызывает запуск сервера следующим образом:

D:
cd Minecraft 1.12 Server Files
cd BungeeCord   <-- and each it's respective server, of course, so I don't have to type it all out again
RUNGEE.bat

И, наконец, файлы RUN.bat выглядят так:

java -jar -Xmx350M spigot-1.12.2.jar -o true

И это запускает все мои серверы в различных командных приглашениях. Но проблема в том, что нет никакого способа (который я знаю) с этим завершить серверы без того, чтобы я вручную вводил / останавливался на каждом сервере командной строки, а затем снова «выходил» в каждую командную строку, чтобы выйти из него. Затем я должен выполнить командный файл вручную.

Итак, мои вопросы:

  • Как мне (с пакетными файлами) завершить работу каждого сервера, а затем каждого окна командной строки, не делая это вручную
  • Как мне перезапустить их автоматически после выхода.
  • И как сделать так, чтобы это происходило один раз каждые 24 часа (или, предпочтительно, в полночь каждую ночь)

РЕДАКТИРОВАТЬ:

Итак, чтобы уточнить, как работает сервер Minecraft, я добавляю это редактирование.

Когда вы запускаете сервер, очевидно, что он запускает сервер и все, и люди могут подключаться и играть. У него есть командная строка, которую вы используете для выполнения команд и просмотра информации и всего такого. Чтобы правильно завершить работу сервера, на котором он все сохраняет и не повреждает файлы, введите в командной строке «stop». Затем он выходит из сервера и обычно выходит из командной строки, чтобы вы могли снова открыть его по желанию. Затем, с настроенными мной пакетными файлами, он не просто выходит из командной строки после ввода 'stop', он возвращает вас в каталог, чтобы вы могли продолжать использовать командную строку, как будто он больше не работает на сервере (потому что это не так), и вы должны набрать 'exit', чтобы закрыть командную строку.

1 ответ1

0

Приложение MineCraft Game Остановите и перезапустите автоматизацию - Windows

Я включил решение для двухкомпонентного сценария. Первая часть потребует установки заголовка, который соответствует строке имени приложения, поэтому команды выполняющегося приложения содержат эти метаданные. Вторая часть будет использовать комбинацию appactivate для активации командных окон с названиями приложений и sendkeys для эмуляции нажатий клавиш для закрытия и перезапуска приложений.


1. Пакетный скрипт (установить заголовок)

Примечание: вы просто добавляете новую строку title "<appname>" в тот же пакетный скрипт, который вы используете в данный момент, но в строке над командами java -jar ~ вы запускаете. Очевидно, вам нужно заменить значение <appname> на имя приложения, которое необходимо остановить и т.д.

title "BungeeCord"
java -jar -Xmx350M spigot-1.12.2.jar -o true

2. Пакетный скрипт (остановите приложение и перезапустите его)

Примечания. Вам нужно установить значение AppName= равным значению и регистру, которые вы используете для каждого сценария, в котором вы устанавливаете title . Значение StopApp= должно быть установлено на значение, которое вы используете, которое вводится для остановки связанного приложения, например, end , stop и т.д.

@ECHO OFF

SET AppName=BungeeCord
SET StopApp=end
SET StopPauseSec=5
SET StartPauseSec=10

SET TempVBSFile=%temp%\~tmpSendKeysTemp.vbs
IF EXIST "%TempVBSFile%" DEL /F /Q "%TempVBSFile%"

ECHO Set WshShell = WScript.CreateObject("WScript.Shell") >>"%TempVBSFile%"
ECHO Wscript.Sleep 900                                    >>"%TempVBSFile%"
ECHO WshShell.AppActivate "%AppName%"                     >>"%TempVBSFile%"
ECHO Wscript.Sleep 900                                    >>"%TempVBSFile%"
ECHO WshShell.SendKeys "%StopApp%"                        >>"%TempVBSFile%"
ECHO Wscript.Sleep 500                                    >>"%TempVBSFile%"
ECHO WshShell.SendKeys "{ENTER}"                          >>"%TempVBSFile%"
ECHO Wscript.Sleep %StopPauseSec%000                      >>"%TempVBSFile%"
ECHO WshShell.SendKeys "%%{F4}"                           >>"%TempVBSFile%"
CSCRIPT //nologo "%TempVBSFile%"

timeout /t %StartPauseSec%
start "" "cmd /k call BungeeStartup.bat"
EXIT /B

планирование

Вы можете использовать планировщик заданий для создания нового задания. На вкладке « Общие » дайте заданию подходящее имя, а затем обязательно проверяйте « Запускать» только при входе пользователя в систему и « Запускать с наивысшими привилегиями» .

На вкладке « Триггеры » выберите « Новые параметры», чтобы создать новый триггер. Затем убедитесь, что для поля « Begin this task задано значение « По расписанию», а для Settings « Настройки» задано значение « Один раз», при этом значения поля « Start представляют собой дату, когда оно будет в полночь, где вы находитесь (например, 7/12/2018), и значение времени устанавливается в 12:00:00, чтобы обеспечить его запуск в указанное время. Теперь, перейдя в раздел « Advanced settings », вы хотите убедиться, что Repeat task every имеет значение 24 часа (введите его вручную, если необходимо), а for a duration of задано неопределенное значение, и это будет гарантировать, что оно запускается каждый раз. ночь в 12 часов ночи.

На вкладке Действия выберите Новый параметр , чтобы создать новое действие. Затем в окне « Новое действие» убедитесь, что в поле « Action установлено значение « Запустить программу», а в поле « Program/script указан полный путь к сценарию, который необходимо запустить, а Start in поле « Начать с» указан только путь к папке, в которой находится сценарий. побежит. Нажмите OK и OK снова, и теперь все должно быть автоматизировано.


Дополнительные ресурсы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .