Extensible Batch file Builder - Расширяемый построитель командных файлов
Программа для сборки командного файла по указанному сценарию.
Изначально создавалась для упрощения построения меню в командном режиме. В последствии "обросла" макросами, вложенными вызовами, произвольными кодировками (локализацией) и возможностью расширения функционала.
Для платформы Windows7+.
Особенности работы в Windows7:
-Имеется ограничение на использование "неродных" кодировок.
-Используется сторонее решение для поддержки управляющих последовательностей ANSI.
Запуск
>EBB.cmd Scenario[.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
Первый минимальный.