Extensible Batch file Builder

Extensible Batch file Builder

Extensible Batch file Builder - Расширяемый построитель командных файлов

Программа для сборки командного файла по указанному сценарию.
Изначально создавалась для упрощения построения меню в командном режиме. В последствии "обросла" макросами, вложенными вызовами, произвольными кодировками (локализацией) и возможностью расширения функционала.
Для платформы Windows7+.

Особенности работы в Windows7:
 -Имеется ограничение на использование "неродных" кодировок.
 -Используется сторонее решение для поддержки управляющих последовательностей ANSI.

Запуск

>EBB.cmdScenario[.ebb] [CommandFile[.cmd]] [/EBB_Run] [/EBB_Debug]\

  • Scenario -Имя файла сценария по умолчанию имеет расширение .ebb
  • CommandFile -Имя создаваемого командного файла. Необязательный параметр, если он не указан то будет подставлено имя файла сценария с расширением .cmd
  • /EBB_Run -Ключ для запуска командного файла по окончанию сборки
  • /EBB_Debug -Ключ для записи отладочной информации в файл "CommandFile.cmd.log"

Файл сценария

Представляет собой текст на языке командного процессора (cmd.exe) с использованием управляющих инструкций.
Управляющая инструкция оформляется как отдельная строка с двумя символами двоеточия вначале (командный процессор интерпретирует её как недопустимую метку) и названием пространства имён за которым через разделитель "<" перечислено название инструкции и её параметры если есть.
Пространство имён это папка расположенная в каталоге с файлом EBB.cmd. Папка содержит командные файлы, названия которых используются в качестве названия управляющих инструкций.
Запуск файла EBB.cmd без параметров отобразит список с описанием всех доступных управляющих инструкций для всех пространств имён.

Список управляющих инструкций пространства имён EBB:

  • BlkAdd, BlkMid, BlkEnd -Группировка блоков кода (косметика) в Notepad++.
  • Build -Сборка командного файла по сценарию из внешнего файла.
  • CodePage -Настройка кодовой страницы файлов сценария и/или командного файла.
  • Command1 -Выполнение произвольных команд на этапе подготовки вложенных файлов.
  • Command2 -Выполнение произвольных команд на этапе сборки командного файла.
  • SetLocalEE -Включение режима расширенной обработки команд и отложенной обработки переменных среды (обязательно для инструкций с меню).
  • FunctionAdd -Объявление новой функции. В результирующий файл будут включены только функции вызов которых (или переход) встречается в коде явно.
  • FunctionEnd -Завершает инструкцию FunctionAdd.
  • FunctionUse -Безусловное добавление кода функции в результирующий файл. Используется, когда отсутствует строка с явным переходом или вызовом этой функции.
  • IfStrNotNul, IfStrNul -Условное добавление строки кода в результирующий файл.
  • Include -Подключение сценария из другого файла. Код сценария из указанного файла будет подставлен взамен управляющей инструкции.
  • Macro -Подстановка кода макроса.
  • MacroAdd -Создание нового макроса.
  • MacroEnd -Завершает инструкцию MacroAdd.
  • MacroParDef -Объявление значений по умолчанию для параметров макроса.
  • MenuAdd -Создание нового меню.
  • MenuCall -Вызов пункта меню.
  • MenuEnd -Завершает инструкцию MenuAdd. Автоматически создаются функции MenuNameItemList и MenuNameLabelGet.
  • MenuItemAdd -Добавление нового пункта в меню (как функцию).
  • MenuItemList -Отображение пунктов меню в виде списка "команда - описание".
  • MenuLabelGet -Поиск названия метки функции соответствующей пункту меню введённой команды.
  • Skip -Управление условной компиляцией.

Установка

Программа готова к использованию, достаточно получить копию проекта и развернуть в отдельную папку.
Комментарии и рекомендации:

  • Удаление папок Examples, Macros_Test, NamespaceTest не повлияет на функционал.
  • Для ускорения процесса сборки переопределить переменную TEMP (например в файле EBB.cmd) на диск расположенный в оперативной памяти (см. проект http://www.ltr-data.se/opencode.html/#ImDisk).
  • Для создания контекстного меню у файлов .ebb в проводнике запустить "\Setup\EBB registry.cmd". Будут добавлены два пункта меню:
    • "Сборка и запуск файла cmd"
    • "Сборка с отладкой и запуск файла cmd".
  • Для настройки редактора Notepad++ запустить файл "\Setup\EBB Notepad++.cmd".
    Будет добавлено выделение синтаксиса и панель "список функций".

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

Находятся в папке "\Examples".
Файл "\Examples\Build & Run.cmd" для автоматической сборки и запуска примеров.

Структура папок

  • ansi189-bin -Используется для платформы Windows7. В консоли платформы Windows7 отсутствует возможность использования управляющих кодовых последовательностей терминала ANSI. В папке находится проект https://github.com/adoxa/ansicon/releases для эмуляции управляющих последовательностей ANSI.
  • EBB -Пространство имён с базовыми управляющими инструкциями.
  • Examples -Примеры сценариев.
  • Macros -Папка с базовыми макросами.
  • Macros_Test -Папка с макросами для примеров из Examples.
  • NamespaceTest -Пространство имён с одной управляющей инструкцией для примера.
  • Setup -Содержит командные файлы для настроек контекстного меню и Notepad++.

Лицензия

ГОСУДАРСТВЕННАЯ ОТКРЫТАЯ ЛИЦЕНЗИЯ, ВЕРСИЯ 1.1 https://g.info.gov.ru/datamart/nsud-datamarts/-/blob/master/open_license_ru

История выпусков

2025-04-01 2.3
Изменения:

  • В макросе MenuExec добавлено удаление ведущих пробелов из введённой команды пользователя

2024-04-03 2.2
Добавлены управляющие инструкции:

  • IfStrNotNul, IfStrNul -Условное добавление строки кода в результирующий файл.
  • MacroParDef -Объявление значений по умолчанию для параметров макроса. Переименована инструкция Function в FunctionUse. Изменён трёхсимвольный код для управляющих ANSI последовательностей:
  • ?H? -Курсор в начало строки
  • ?_? -Подчёркивание включить
  • ? ? -Подчёркивание отключить Добавлен ключ запуска для вывода описания управлящей инструкции по её названию: >EBB.cmd /УправляющаяИнструкция*
    ?? Для второй Вторая стадия с подстановкой ? в названии инструкции

2024-03-29 2.1
Добавлена управляющая инструкция Skip.

2024-03-23 2.0
Добавлены управляющие инструкции:

  • BlkAdd, BlkMid, BlkEnd -"Косметика" для Notepad++
  • Buld, Function, FunctionAdd, FunctionEnd

Добавлены переменные для использования внутри инструкции MenuItemAdd:

  • @Cmd -Текст команды
  • @Label -Название метки функции
  • @Text -Текст описания пункта меню

2023-10-19 1.0
Первый минимальный.