Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
Sk1nG

"Батник" и его теневая сторона.bat

Recommended Posts

Данная тема покажет, на сколько важны и могущественны иногда могут быть незаметные бат-файлы.

 

С этой темы я начинаю вести ветку адаптации и автоматизации процессов для игровых серверов DayZ с помощью бат-файлов (пакетных файлов).

Данная тема предусматривает создание сервера с нуля и тд

Подробная информация о создании чистого сервера - здесь.

 

Начало

Мы разберем пример бат-файла для запуска сервера DayZ, узнаем, как он работает, и увидим, как вы можете использовать его для управления своим сервером. Этот пример не только упростит процесс запуска сервера, но и даст вам основу для создания собственных скриптов автоматизации.

 

Для тех, кто предпочитает пропустить основы настройки уже готового бат-файла и перейти непосредственно к глубокому погружению в материал, рекомендую направить свой взор на раздел ниже "Разбор терминологии и конструкций с командами". Здесь вы найдете детализированные объяснения команд, которые раскроют перед вами всю мощь и гибкость бат-файлов.


Что такое Бат-файлы, или пакетные файлы? 

Бат-файлы (или пакетные файлы) в Windows используются для автоматизации выполнения задач в командной строке. Пакетные файлы (.bat) — настоящие волшебные палочки в мире Windows, способные автоматизировать практически любую задачу, от самой простой до чрезвычайно сложной. Представьте себе, что вы можете дать вашему компьютеру серию команд, и он выполнит их все одним щелчком мыши. Это и есть суть бат-файлов. Они могут запускать программы, управлять файлами, взаимодействовать с сетевыми устройствами и даже управлять сложными серверными операциями. Всё это делает их незаменимым инструментом для администраторов систем и энтузиастов.

 

В данном примере я использую не простой скрипт, я использую переменные и визуальную адаптацию!

Бат файл который будет разобран в данной теме:

Скрытый текст

@echo off
TITLE Статус сервера
COLOR 0D

:: Переменные ::
set "DAYZ_SA_SERVER_LOCATION=C:\Program Files (x86)\Steam\steamapps\common\DayZServer"
set "BEC_LOCATION=%DAYZ_SA_SERVER_LOCATION%\bec"

:: Серверные моды ::
set SERVER_MODS=^
@Server;^
@ServerFix

:: Моды ::
set MODS=^
@STALKER- DayZone - Map Public;^
@CF;^
@Code Lock;^
@CraftItem

:: Запуск сервера DayZ ::
echo Запускаю сервер DayZ...
pushd "%DAYZ_SA_SERVER_LOCATION%"
start DayZServer_x64.exe -config=serverDZ.cfg -port=2302 -cpuCount=6 -profiles=profiles -dologs -adminlog -netlog -freezecheck -servermod=%SERVER_MODS% -mod=%MODS% -BEpath=%DAYZ_SA_SERVER_LOCATION%\profiles\BattlEye
popd

:: Задержка перед запуском BEC ::
timeout /t 15 /nobreak > NUL

:loop
:: Проверка, запущен ли BEC ::
tasklist /FI "IMAGENAME eq Bec.exe" 2>NUL | find /I /N "Bec.exe">NUL
if "%ERRORLEVEL%"=="0" (
    echo BEC уже запущен.
    exit
) else (
    echo Запускаю BEC...
    pushd "%BEC_LOCATION%"
    start Bec.exe -f Config.cfg --dsc
    popd
    timeout /t 15 /nobreak > NUL
    goto loop
)

 


Разбор бат-файла для запуска сервера DayZ:

Бат-файл начинается с базовых настроек, которые подготавливают консоль для выполнения последующих команд:

@echo off
TITLE Статус сервера
COLOR 0D
  • @echo off гарантирует, что команды не будут отображаться в консоли, делая вывод чистым.
  • TITLE Статус сервера устанавливает название окна консоли, помогая организовать процессы.
  • COLOR 0D изменяет цвет фона и текста окна консоли для улучшения читаемости.

 

Настройка переменных
Переменные задают ключевые пути, которые используются в бат-файле:

set "DAYZ_SA_SERVER_LOCATION=C:\Program Files (x86)\Steam\steamapps\common\DayZServer"
set "BEC_LOCATION=%DAYZ_SA_SERVER_LOCATION%\bec"
  • DAYZ_SA_SERVER_LOCATION указывает местоположение сервера DayZ на вашем компьютере.
  • BEC_LOCATION определяет путь к BattlEye Extended Controls (BEC), используя предыдущую переменную для упрощения.

 

Определение модов
Моды расширяют возможности сервера, и их пути также задаются через переменные:

set SERVER_MODS=^
@Mod1;^
@Mod2

set MODS=^
@Mod1;^
@Mod2

 

  • SERVER_MODS содержит список модов, необходимых для работы сервера. Эти моды могут включать инструменты для администрирования или специфические функции.
  • MODS перечисляет игровые моды, которые будут загружены на сервере, обогащая игровой процесс новым контентом и возможностями.

 

 

Запуск сервера

Основная команда запускает сервер DayZ с заданными параметрами:

echo Запускаю сервер DayZ...
pushd "%DAYZ_SA_SERVER_LOCATION%"
start DayZServer_x64.exe -config=serverDZ.cfg -port=2302 -cpuCount=6 -profiles=profiles -dologs -adminlog -netlog -freezecheck -servermod=%SERVER_MODS% -mod=%MODS% -BEpath=%DAYZ_SA_SERVER_LOCATION%\profiles\BattlEye
popd

echo Запускаю сервер DayZ... выводит уведомление о начале процесса запуска.
pushd и popd временно меняют текущую директорию на ту, где расположен сервер, для выполнения команды запуска.
 

start DayZServer_x64.exe инициирует запуск сервера с рядом параметров:
-config=serverDZ.cfg указывает на файл конфигурации сервера.
-port=2302 задает порт для подключения клиентов.
-cpuCount=6 ограничивает сервер использованием 6 ядер процессора для оптимизации производительности.
-profiles=profiles определяет директорию для профилей и логов сервера.
-dologs, -adminlog, -netlog включают различные виды логирования для отслеживания событий сервера.
-freezecheck активирует проверку на зависание сервера.
-servermod и -mod загружают указанные серверные и игровые моды.
-BEpath задает путь к BattlEye.

 

Управление BEC

timeout /t 15 /nobreak > NUL
:loop
tasklist /FI "IMAGENAME eq Bec.exe" 2>NUL | find /I /N "Bec.exe">NUL
if "%ERRORLEVEL%"=="0" (
    echo BEC уже запущен.
    exit
) else (
    echo Запускаю BEC...
    pushd "%BEC_LOCATION%"
    start Bec.exe -f Config.cfg --dsc
    popd
    timeout /t 15 /nobreak > NUL
    goto loop
)

Задержка timeout дает серверу время на запуск перед инициализацией BEC.
Цикл проверяет запущен ли BEC и запускает его, если необходимо, с конфигурацией Config.cfg.

 


Разбор терминологии и конструкций с командами:

Надевай скафандр, погружаемся.

 

TITLE

TITLE Статус сервера

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

 

COLOR

COLOR 0D

Изменяет цвет фона и текста консоли. 0D — это код цвета, где 0 обозначает черный фон, а D — светло-пурпурный текст. Это улучшает читаемость и визуальное восприятие.

 

set

set "DAYZ_SA_SERVER_LOCATION=C:\Program Files (x86)\Steam\steamapps\common\DayZServer"

Определяет переменную с указанным значением. В данном случае, задается путь к установленному серверу DayZ, что позволяет легко ссылаться на этот путь в дальнейшем коде.


pushd и popd

pushd "%DAYZ_SA_SERVER_LOCATION%"
...
popd

pushd временно меняет текущую директорию на указанную, позволяя выполнять команды в этой директории.

popd возвращает в исходную директорию. Это полезно для организации кода и выполнения команд в нужном контексте без необходимости постоянно указывать полные пути.

 

start

start DayZServer_x64.exe -config=serverDZ.cfg ...

Запускает программу или команду в новом окне командной строки. Здесь используется для запуска сервера DayZ с набором параметров, таких как конфигурация, порт, количество ядер процессора и другие.

 

timeout

timeout /t 15 /nobreak > NUL

Осуществляет задержку на указанное количество секунд (15 в данном случае), прежде чем продолжить выполнение скрипта. > NUL предотвращает вывод отсчета времени на экран.

 

:label и goto

:loop
...
goto loop

:loop определяет метку (точку в скрипте), к которой можно вернуться с помощью команды goto. Это создает цикл, позволяя повторять определенный участок кода до достижения нужного условия.

 

if и else

if "%ERRORLEVEL%"=="0" (
    echo BEC уже запущен.
) else (
    echo Запускаю BEC...
    ...
)

Проверяет условие и выполняет команды внутри скобок, если условие истинно (if), и другие команды, если условие ложно (else). %ERRORLEVEL% содержит код возврата последней выполненной программы, где 0 обычно означает успешное выполнение.

 

tasklist и find

tasklist /FI "IMAGENAME eq Bec.exe" 2>NUL | find /I /N "Bec.exe">NUL

tasklist выводит список запущенных процессов, фильтруя их по имени (IMAGENAME eq Bec.exe). find ищет строку "Bec.exe" в выводе tasklist. Комбинация этих команд используется для проверки, запущен ли уже процесс BEC.

Вам всё ещё кажется что пакетные файла (.bat) не на что не годятся?

 

Вот идеи, которые возможно реализовать с помощью пакетных файлов:

Резервное копирование данных сервера

Бат-файл для автоматического создания резервных копий важных файлов сервера, таких как конфигурации, базы данных игроков и мира. Это может быть запланировано на регулярной основе или инициировано вручную перед важными обновлениями сервера.

 

Обновление Модов и Серверного ПО

Автоматизированный процесс обновления модов и программного обеспечения сервера. Бат-файл может загружать последние версии модов с предварительно заданных URL-адресов и обновлять серверное ПО, минимизируя время простоя.

 

Мониторинг состояния сервера

Скрипт для мониторинга состояния сервера, проверяя, активен ли процесс сервера, и перезапуская его в случае сбоя. 

 

Управление логами сервера

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


Батя бат-файлов

 

Есть возможность развернуть целую сеть бат-файлов и их взаимодействие через родительский бат-файл представляет собой мощный способ организации и автоматизации задач, особенно когда дело касается управления серверами, опять же к примеру как сервер DayZ. Это позволяет создать иерархическую структуру задач, где один главный бат-файл управляет запуском других бат-файлов по определенным условиям или в заданные временные промежутки. Вот как это может работать:

 

Основная задача: Служит центральным узлом для управления различными операциями сервера. Может быть настроен на выполнение определенных действий в зависимости от времени суток, событий на сервере или других триггеров.

 

Примеры использования:

 

  • Запуск сервера: Утром родительский бат-файл автоматически запускает сервер DayZ.
  • Резервное копирование: В полдень запускает другой бат-файл для создания резервных копий важных данных сервера.
  • Обновление модов: Вечером инициирует процесс обновления модов, запуская соответствующий бат-файл.
  • Перезапуск сервера: В указанные временные промежутки осуществляет перезапуск сервера для поддержания его производительности на высоком уровне.

 

 

В моей следующей статье мы возьмемся за создание пакетного файла, целью которого будет резервное копирование лог-файлов и их последующая архивация. Мы возьмем за основу один из самых распространенных и эффективных пакетных файлов, используемых для запуска и мониторинга серверов DayZ, адаптируя его под новые задачи. Это будет практическое руководство, которое покажет, как максимально использовать потенциал скриптов для упрощения управления вашим сервером.

Edited by Sk1nG (see edit history)

Share this post


Link to post
Share on other sites



а можно больше примеров? 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.