Форум программистов, компьютерный форум, киберфорум
nekit270
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Добро пожаловать, здесь я программирую бессмысленно и беспощадно

ExBAT - расширенная версия Batch

Запись от nekit270 размещена 17.09.2023 в 23:35
Показов 1783 Комментарии 6
Метки bat, batch, cmd, exbat, windows

Мне тут нечем заняться было, и я решил написать на C# расширение bat-языка, которое компилируется в обычный bat-файл.

1. Работа с компилятором

1.1. Компиляция
Code
1
exbat.exe --compile source.exb output.bat
1.2. Запуск (компиляция во временный файл, его запуск и последующее удаление)
Code
1
exbat.exe --run source.exb
2. Синтаксис ExBAT

2.1. Комментарии

В качестве символов начала комментария допустимы:
  • # (bash-style)
  • // (c-style)
  • :: и rem (из Batch)

Пример:
Windows Batch file
1
2
3
4
# Комментарий
// Тоже комментарий
:: Снова комментарий
rem Еще один комментарий (а я думал, сова)
2.2. Переменные

Переменные можно использовать с использованием $ (как в bash)

Пример:
Windows Batch file
1
2
3
4
set MYVAR=5
echo %MYVAR%
echo !MYVAR!
echo $MYVAR
2.3. Функции

В ExBAT можно определять функции и вызывать их.

Определение функции начинается с оператора
function имя_функции(аргументы, через, запятую)
и заканчивается оператором
end function

В коде функции можно использовать конструкцию $имя_аргумента вместо номера аргумента (%~номер_аргумента)

Вызвать функцию можно с помощью такой конструкции:
имя_функции(аргументы, через, запятую)

Для маркировки, что аргумент - имя переменной, куда функция записывает результат выполнения, можно использовать модификатор out (это никак не влияет на выполнение и создано для того, чтобы код выглядел понятнее):
pow(5, 2, out result)

Пример:
Windows Batch file
1
2
3
4
5
6
function foo(arg1, arg2)
    echo Первый аргумент: $arg1
    echo Второй аргумент: $arg2
end function
 
foo("Строка 1", "Строка 2")
2.4. Вычисление выражений

В ExBAT доступно inline-вычисление математических выражений с помощью оператора calc{выражение}.

Пример:
Windows Batch file
1
2
set /p "number=Введите число: "
echo $number * 2 = calc{$number * 2}
2.5. Оператор if

Оператор if был изменен, чтобы выглядеть более наглядно:

Windows Batch file
1
2
3
4
5
6
7
if(условие_1)
    команды_1
else if(условие_2)
    команды_2
else
    команды_3
end if
В условиях доступны операторы сравнения <, >, <= и >= (вместо lss, gtr, leq и geq)

Пример:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
set /p "number=Введите число: "
if($number < 5)
    echo Число меньше 5
else if($number < 10)
    echo Число меньше 10, но больше 5
else if($number < 20)
    echo Число меньше 20, но больше 10
else
    echo Число больше 20
end if
2.6. Подавление вывода

Для подавления вывода в ExBAT можно использовать следующие операторы:
  • noout(команда) - подавление вывода в stdout (аналогично команда > nul)
  • noerror(команда) - подавление вывода в stderr (аналогично команда 2> nul)
  • quiet(команда) - подавление всего вывода (аналогично команда > nul 2>nul)

2.7. Макроподстановки

Можно использовать макроподстановки с помощью оператора define(имя, значение).

Пример:
Windows Batch file
1
2
3
4
define(VERSION, 1.4)
 
# Выведет "1.4"
echo VERSION
2.8. Подключение библиотек

Оператор include(имя_библиотеки) позволяет подключать к ExBAT-скрипту библиотеки.
Пока их можно подключить только из [путь_к_компилятору]\lib, но планируется добавление возможности подключать их из любого места.

Пример:
Windows Batch file
1
2
3
4
5
# math - одна из библиотек, поставляемых вместе с компилятором
include(math)
 
pow(5, 2, out result)
echo $result
Про стандартные библиотеки статья (или даже несколько?) будет написана в ближайшее время, я оставлю здесь ссылку.

3. Ссылки на скачивание
P.S. Что думаете, у данного инструмента есть смысл и шанс выжить? Пишите в комментариях.
Метки bat, batch, cmd, exbat, windows
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 6
Комментарии
  1. Старый комментарий
    Аватар для AlexProgramm
    Вот это да! Новый язык!
    Запись от AlexProgramm размещена 18.09.2023 в 10:05 AlexProgramm вне форума
  2. Старый комментарий
    Аватар для AlexProgramm
    Мне тут нечем заняться было
    А когда есть, чем заняться, вы наверное операционные системы пишите?
    Запись от AlexProgramm размещена 18.09.2023 в 11:36 AlexProgramm вне форума
  3. Старый комментарий
    Аватар для nekit270
    Цитата Сообщение от AlexProgramm
    А когда есть, чем заняться, вы наверное операционные системы пишите?
    пробовал тыкать Cosmos, но как-то не пошло. А так я большую часть программ пишу от нечего делать, но некоторые оказываются полезными, а некоторые - нет
    Запись от nekit270 размещена 18.09.2023 в 12:19 nekit270 вне форума
  4. Старый комментарий
    Аватар для nekit270
    Цитата Сообщение от AlexProgramm
    Вот это да! Новый язык!
    не думаю, что это можно назвать новым языком. скорее просто расширение bat, и парочка библиотек. ничего из того, что нельзя сделать на batch, нельзя сделать и на exbat, это просто "синтаксический сахар"
    Запись от nekit270 размещена 18.09.2023 в 12:21 nekit270 вне форума
  5. Старый комментарий
    Аватар для AlexProgramm
    Ну надеюсь этот программный продукт попадет в число полезных!
    Запись от AlexProgramm размещена 18.09.2023 в 13:36 AlexProgramm вне форума
  6. Старый комментарий
    Аватар для nekit270
    Цитата Сообщение от AlexProgramm
    Ну надеюсь этот программный продукт попадет в число полезных!
    тоже надеюсь. вопрос в том, будет его кто-нибудь использовать или нет
    Запись от nekit270 размещена 18.09.2023 в 15:53 nekit270 вне форума
 
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru