Справочник The Bat!

XMP макросы

  • Операционная система
  • Файлы и папки
  • Дата и время
  • Диалоги и сообщения
  • IDN — международные домены
  • Письма и заголовки
  • Строки
  • Разное

  • Операционная система

    Макрос Описание
    %XMP_Beep(Frequency, Duration) Выводит звук с указанной «Frequency» и «Duration». Атрибут «Frequency» должен быть в диапазоне от 37 до 32767. «Duration» обозначает длительность звука в миллисекундах.
    Пример:
    %XMP_Beep(300,300)%
    %XMP_Beep(200,150)%
    %XMP_Beep(100,400)%
    %XMP_Envir(EnvironmentVariable) Выводит содержимое указанной «EnvironmentVariable». В консоли с помощью команды "SET" можно получить список всех доступных переменных окружения.
    Пример:
    %XMP_Envir("OS")%
    %XMP_Envir("WinDir")%
    Вывод:
    Windows_NT
    C:\WINNT
    %XMP_Host2IP([Hostname]) Определяет IP-адрес указанного «Hostname». Если параметр "Hostname" не задан, возвращается IP-адрес локального компьютера. Может потребоваться сетевое или интернет-соединение. Если хост не найден, макрос может кратковременно (около 2 секунд) блокироваться.
    Пример:
    %XMP_Host2IP%
    %XMP_Host2IP("gaijin1")%
    %XMP_Host2IP("gaijin2")%
    Вывод:
    192.168.1.1
    192.168.1.1
    192.168.1.2
    %XMP_IsUserAdmin Этот макрос возвращает «1», если текущий пользователь обладает правами администратора, иначе возвращается «0».
    %XMP_KbdLayout([Layout]) Определяет или устанавливает текущую раскладку клавиатуры. Если параметр «Layout» не указан, возвращается текущая раскладка. Если указан, раскладка устанавливается, возврат при успешном выполнении — пустая строка.
    Раскладка клавиатуры сохраняется на протяжении всей сессии работы с The Bat!.
    В качестве «Layout» обычно используется шестнадцатеричное значение; ведущие нули можно опускать. Возвращаемое значение всегда 8-значное шестнадцатеричное.
    Вместо шестнадцатеричного значения можно использовать языковое сокращение. Поддерживаются все сокращения, определённые Microsoft. Для удобства также поддерживаются псевдонимы для языков, а не для раскладок. Включает все языковые сокращения The Bat! и общепринятые сокращения, например «de» для немецкого и «en» для английского. Полный список в приложении «Language IDs».
    Пример:
    Layout: %XMP_KbdLayout%
    %XMP_KbdLayout("409")%
    Layout: %XMP_KbdLayout%
    Вывод (с тестовым вводом):
    Test äöüÄÖÜ
    Layout: 00000407
    Layout: 00000409
    Test ';[":{
    %XMP_Process("E", Process)
    %XMP_Process("L", [Delimiter])
    Отображает список всех запущенных процессов.
    Первый параметр должен быть "E" или "L".
    Опция "E" ищет указанный «Process». Если процесс найден, возвращается "1", иначе "0". Регистр не учитывается. Указывать нужно полное имя процесса. Расширение ".EXE" можно опускать.
    Если указан "L", возвращается список всех процессов. Аргумент "Delimiter" задаёт разделитель. По умолчанию используется перенос строки Windows.
    Пример:
    %XMP_Process("L")%
    %XMP_Process("L","|")%
    %XMP_Process("E","TheBat.exe")%
    Layout: %XMP_KbdLayout%
    Вывод (сокращённо):
    [IDLE]
    System
    SMSS.EXE
    CSRSS.EXE
    WINLOGON.EXE
    thebat.exe
    [IDLE]|System|SMSS.EXE|CSRSS.EXE|WINLOGON.EXE|...|thebat.exe
    %XMP_RegGet(Key, [Default]) Читает значение из реестра Windows.
    «Key» указывается в формате "ROOT\Key\Entry".
    Корневой ключ может быть как короткой, так и длинной записью:
    CR HKEY_CLASSES_ROOT
    CU HKEY_CURRENT_USER
    LM HKEY_LOCAL_MACHINE
    US HKEY_USERS
    PD HKEY_PERFORMANCE_DATA
    CC HKEY_CURRENT_CONFIG
    DD HKEY_DYN_DATA
    В «Default» можно указать текст, который будет возвращён при ошибке, например если запись отсутствует.
    Можно читать строки, расширенные строки, мультистроки и DWord значения (до 0xFFFFFFFF!).
    Пример:
    %XMP_RegGet("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName")%
    %XMP_RegGet("LM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName")%
    %XMP_RegGet("LM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate")%
    Вывод:
    Microsoft Windows 2000
    Microsoft Windows 2000
    1022448564
    %XMP_RegSet(Key, [Value], [Format]) Записывает «Value» в реестр Windows.
    «Key» указывается в формате "ROOT\Key\Entry".
    Корневой ключ может быть как короткой, так и длинной записью:
    CR HKEY_CLASSES_ROOT
    CU HKEY_CURRENT_USER
    LM HKEY_LOCAL_MACHINE
    US HKEY_USERS
    PD HKEY_PERFORMANCE_DATA
    CC HKEY_CURRENT_CONFIG
    DD HKEY_DYN_DATA
    В «Format» можно указать формат данных. По умолчанию — "S" (строка). Допустимые форматы:
    S String
    E Expanded-String
    M Multi-String
    D DWord
    Пример:
    %XMP_RegSet("CU\Test\TestString","Hello")%
    %XMP_RegSet("CU\Test\TestDWord","123","D")%
    При успешной записи возвращается "1", при ошибке — "0".
    %XMP_Run(Program, [Window]) Запускает указанную программу Windows.
    Параметр «Window» задаёт вид окна. Возможные значения:
    MIN -> свернутое
    MAX -> развернутое
    HIDE -> скрытое
    Если «Window» не указан, окно открывается в обычном размере.
    Пример:
    %XMP_Run("calc")%
    %XMP_Run("explorer","max")%
    %XMP_RunCmd(Command, [NoConvert],
    [Timeout])
    Выполняет консольный «Command» и возвращает вывод. Пути должны быть в формате DOS (8+3)!
    Если «NoConvert» = "1", вывод не конвертируется в ANSI. Некоторые программы уже возвращают данные в ANSI.
    «Timeout» задаёт максимальное время ожидания в миллисекундах. По умолчанию 5000 мс (5 секунд), можно увеличить для длительных операций.
    Пример:
    %XMP_RunCmd("ver")%
    Вывод:
    Microsoft Windows 2000 [Version 5.00.2195]
    %XMP_SetClipB(Text) Сохраняет указанный «Text» в буфер обмена Windows. С помощью внутреннего макроса The Bat! "%CLIPBOARD" можно читать буфер обмена.
    Пример:
    %XMP_SetClipB("Hello")%
    Макрос «XMP_SetClipB» не возвращает значения.
    %XMP_SendKeys(Keys, [Wait]) Отправляет указанные «Keys» или комбинации клавиш в активное приложение. В случае быстрой шаблонной вставки — в редактор сообщений.
    При использовании в фильтрах или других шаблонах возможны нежелательные эффекты!
    Параметр «Wait» опциональный: 1 — ждать выполнения, 0 — нет.
    Синтаксис для «Keys» аналогичен SendKeys VB:
    + -> Shift
    ^ -> Control
    % -> Alt
    ~ -> Enter
    ( и ) -> группировка клавиш
    { и } -> имена клавиш
    Скобки объединяют клавиши: "+ab" = Shift+a, b; "+(ab)" = Shift+a, Shift+b.
    Имена клавиш в фигурных скобках. Допустимые имена:
    BKSP, BS, BACKSPACE, BREAK, CAPSLOCK, CLEAR, DEL, DELETE, DOWN, END, ENTER, ESC, ESCAPE, F1-F16, HELP, HOME, INS, LEFT, NUMLOCK, PGDN, PGUP, PRTSC, RIGHT, SCROLLLOCK, TAB, UP
    Текст в редакторе:
    Hello,
    Test
    Пример:
    %XMP_SendKeys("^(ac{END})",1)%
    %XMP_QuoteAdd("%CLIPBOARD")%-
    Вывод:
    Hello
    Test
    > Hello
    > Test
    %XMP_SysInfo(Text) Получает системную информацию и заменяет в «Text» соответствующие теги.
    Поддерживаемые теги:
    $clv$ -> уровень процессора
    $cmn$ -> модель CPU
    $cnr$ -> количество CPU
    $cns$ -> имя CPU
    $csp$ -> скорость CPU
    $ctp$ -> тип CPU
    $cvn$ -> производитель CPU
    $lhn$ -> локальный хост
    $lip$ -> локальный IP
    $maf$ -> доступный размер файла подкачки (МБ)
    $map$ -> доступная физ. память (МБ)
    $mav$ -> доступная виртуальная память (МБ)
    $mml$ -> загрузка памяти (%)
    $mtf$ -> макс. размер файла подкачки (МБ)
    $mtp$ -> общий объем физ. памяти (МБ)
    $mtv$ -> общий объем виртуальной памяти (МБ)
    $osp$ -> платформа
    $pcn$ -> имя компьютера
    $sed$ -> время работы системы (дни)
    $seh$ -> время работы системы (часы)
    $sen$ -> время работы системы (минуты)
    $ses$ -> время работы системы (секунды)
    $suh$ -> часы работы системы
    $sun$ -> минуты работы системы
    $sus$ -> секунды работы системы
    $tdn$ -> название летнего времени для текущей зоны
    $tsn$ -> название зимнего времени для текущей зоны
    $tzn$ -> название текущей зоны
    $usn$ -> имя пользователя
    $wcn$ -> название ОС
    $wvm$ -> основная версия ОС
    $wvs$ -> побочная версия ОС
    $wvb$ -> номер сборки ОС
    $wvc$ -> версия CSD ОС
    Пример:
    %XMP_SysInfo("Windows $wcn$ ($osp$ $wvm$.$wvs$ Build $wvb$ - $wvc$)")%
    %XMP_SysInfo("CPU: $cvn$ $cmn$ ($ctp$)")%
    ---
    Система работает: %XMP_SysInfo("$sen$ минут")%
    (%XMP_SysInfo("$sed$ дней, $suh$ часов, $sun$ минут, $sus$ секунд."))%
    Вывод:
    Windows 2000 (NT 5.0 Build 2195 - Service Pack 4)
    CPU: Intel Pentium 4 (586)
    ---
    Система работает: 764 минуты
    (0 дней, 12 часов, 44 минуты, 10 секунд.)

    0  

    Файлы и папки

    Макрос Описание
    %XMP_AttrGet(Filename) Определяет атрибуты указанного файла.
    Следующие значения возвращаются как атрибуты:
    R -> Только для чтения
    A -> Архив
    H -> Скрытый
    S -> Системный
    D -> Каталог
    Если возвращается пустая строка, файл не имеет атрибутов. В случае ошибки возвращается символ "*".
    Пример:
    %XMP_AttrGet("C:\Boot.ini")
    Вывод:
    HS
    %XMP_AttrSet(Filename, [Attributes]) Устанавливает атрибуты указанного файла.
    Следующие значения распознаются как атрибуты:
    R -> Только для чтения
    A -> Архив
    H -> Скрытый
    S -> Системный
    Порядок символов и регистр не учитываются. Если указаны символы, которых нет в списке выше, они игнорируются.
    Если атрибуты не указаны, все атрибуты удаляются.
    Если атрибуты успешно установлены, возвращается "1", иначе "0".
    Пример:
    %XMP_AttrSet("C:\Test.txt","HSA")
    %XMP_DirCreate(Path) Создаёт указанный "Path". Если путь успешно создан или уже существует, возвращается "1". Если путь создать нельзя, возвращается "0".
    Пример:
    %_Tmp='%XMP_DirCreate("C:\Test1\TEST2\test3")'%-
    Переменная "%_Tmp" содержит результат работы макроса "%XMP_DirCreate", который можно использовать с "%IF" или другим макросом.
    %XMP_DirExist(Directory) Проверяет, существует ли "Directory". Если каталог найден, возвращается "1", иначе "0".
    Пример:
    %_Tmp='%XMP_DirExist("C:\Windows\System32")'%-
    Переменная "%_Tmp" содержит результат работы макроса "%XMP_DirExist", который можно использовать с "%IF" или другим макросом.
    %XMP_FileAddLn(Filename, Text) Добавляет в "Filename" строки, указанные в "Text".
    Аргумент "Text" может содержать переносы строк. Если файл не существует, он будет создан.
    Пример:
    %XMP_FileAddLn("C:\Test.txt","%XMP_StrC('Zeile1\r\nZeile2\r\nZeile3')")
    Содержимое файла:
    ...
    Zeile1
    Zeile2
    Zeile3
    %XMP_FileCopy(Source, Target) Копирует файл(ы) из "Source" в каталог "Target". Если файл уже существует в целевом каталоге, он перезаписывается без запроса.
    Если файлы/каталоги успешно скопированы, возвращается "1", иначе "0".
    Для копирования нескольких файлов одновременно имена файлов можно разделять символом "|". Поддерживаются символы подстановки "?" и "*".
    Пример:
    %_Tmp='%XMP_FileCopy("C:\Test.txt","C:\Windows\")'%-
    Переменная "%_Tmp" содержит результат работы макроса "%XMP_FileCopy", который можно использовать с "%IF" или другим макросом.
    %XMP_FileDel(Filename) Удаляет указанный "Filename" без запроса. Если файл успешно удалён, возвращается "1", иначе "0".
    Для удаления нескольких файлов одновременно имена файлов можно разделять символом "|". Поддерживаются символы подстановки "?" и "*".
    Пример:
    %_Tmp='%XMP_FileDel("C:\Test.txt")'%-
    Переменная "%_Tmp" содержит результат работы макроса "%XMP_FileDel", который можно использовать с "%IF" или другим макросом.
    %XMP_FileExist(Filename) Проверяет, существует ли "Filename". Если файл найден, возвращается "1", иначе "0".
    Пример:
    %_Tmp='%XMP_FileExist("C:\Test.txt")'%-
    Переменная "%_Tmp" содержит результат работы макроса "%XMP_FileExist", который можно использовать с "%IF" или другим макросом.
    %XMP_FileInfo(Filename, Info) Определяет информацию из блока VERSIONINFO EXE- или DLL-файла.
    Аргумент "Info" указывает имя требуемой информации. Ограничений по имени нет. Если информация не найдена, возвращается пустое значение.
    Примеры для "Info":
    • CompanyName
    • FileDescription
    • FileVersion
    • InternalName
    • LegalCopyright
    • OriginalFilename
    • ProductName
    • ProductVersion
    В отдельных случаях могут быть доступны и другие значения.
    %XMP_FileInUse(Filename) Определяет, используется ли файл, указанный в параметре "Filename". Макрос возвращает "1", если файл используется, иначе "0".
    Пример:
    %XMP_FileInUse("C:\InUse.txt")
    %XMP_FileInUse("C:\NotInUse.txt")
    Вывод:
    1
    0
    %XMP_FileLines(Filename, [Start], [Count],
    [Conversion])
    Читает из "Filename" начиная с строки "Start" указанное количество строк "Count" и возвращает их.
    Если "Start" не указан, используется первая строка. По умолчанию "Count" = 1. Если передать "0", возвращаются все строки до конца файла.
    Вызов макроса только с именем файла возвращает все строки.
    Для параметра "Conversion" можно указать "1" для чтения DOS-файлов. По умолчанию "0" для Windows-файлов.
    Пример:
    %XMP_FileLines("C:\Win.txt",2,2)
    Без конверсии: %XMP_FileLines("C:\Dos.txt",2,1)%-
    С конверсией: %XMP_FileLines("C:\Dos.txt",2,1,1)
    Вывод:
    2 Abc ÄäÖöÜü ß µ WIN
    3 Abc ÄäÖöÜü ß µ WIN

    Без конверсии: 2 Abc Ž„™”š• á æ DOS
    С конверсией: 2 Abc ÄäÖöÜü ß µ DOS
    %XMP_FileLnCnt(Filename) Определяет количество строк в указанном "Filename".
    Если файл не найден, возвращается пустая строка.
    Пример:
    Lines="%XMP_FileLnCnt('C:\boot.ini')"
    Error="%XMP_FileLnCnt('C:\boot1.ini')"
    Вывод:
    Lines="5"
    Error=""
    %XMP_FileLong(Filename) Определяет длинное имя файла из короткого имени файла или каталога.
    Пример:
    %XMP_FileLong("C:\WINDOWS\ANWEND~1\THEBAT~1\")
    Вывод:
    C:\WINDOWS\Anwendungsdaten\The Bat!\
    %XMP_FileMove(Source, Target) Перемещает файл(ы) из "Source" в каталог "Target". Если файл с таким именем уже существует, перезаписывается без запроса.
    Если файлы/каталоги успешно перемещены, возвращается "1", иначе "0".
    Для перемещения нескольких файлов одновременно имена можно разделять "|". Поддерживаются символы подстановки "?" и "*".
    Пример:
    %_Tmp='%XMP_FileMove("C:\Test.txt","C:\Windows\")'%-
    Переменная "%_Tmp" содержит результат работы макроса "%XMP_FileMove", который можно использовать с "%IF" или другим макросом.
    %XMP_FileName(Filename, [Part]) Возвращает часть "Filename".
    Следующие "Parts" могут быть извлечены:
    N -> Имя файла с расширением (по умолчанию)
    F -> Имя файла без расширения
    E -> Расширение файла
    D -> Буква диска
    P -> Путь с буквой диска
    V -> Путь без буквы диска
    T -> Тип файла, как в проводнике
    Пример:
    %XMP_FileName("C:\Windows\Explorer.exe")
    %XMP_FileName("C:\Windows\Explorer.exe","F")
    %XMP_FileName("C:\Windows\Explorer.exe","E")
    %XMP_FileName("C:\Windows\Explorer.exe","D")
    %XMP_FileName("C:\Windows\Explorer.exe","P")
    %XMP_FileName("C:\Windows\Explorer.exe","V")
    %XMP_FileName("C:\Windows\Explorer.exe","T")
    Вывод:
    Explorer.exe
    Explorer
    .exe
    C:
    C:\Windows\
    \Windows\
    Приложение
    %XMP_FileOwner(Filename) Возвращает владельца указанного файла.
    Пример:
    %XMP_FileOwner("C:\Boot.ini")
    %XMP_FileOwner("D:\Test.txt")
    Вывод:
    VORDEFINIERT\Administratoren
    NOBODY\Gaijin
    %XMP_FileShort(Filename) Определяет короткое имя файла (DOS-имя) указанного файла или каталога.
    Пример:
    %XMP_FileShort("C:\WINDOWS\Anwendungsdaten\The Bat!\Vorlagen\QT_Pack")
    Вывод:
    C:\WINDOWS\ANWEND~1\THEBAT~1\Vorlagen\QT_Pack
    %XMP_FileSize(Filename, [Unit]) Определяет размер "Filename".
    Аргумент "Unit" может принимать значения:
    K -> Килобайты
    M -> Мегабайты
    G -> Гигабайты
    Пример:
    %XMP_FileSize("C:\Test.dat","K") KB
    Вывод:
    321,72 KB
    %XMP_FileTime(Filename, Date, [Format]) Определяет указанную дату "Date" файла.
    Аргумент "Date" может принимать значения:
    A -> Дата последнего доступа
    C -> Дата и время создания
    M -> Дата и время последнего изменения
    Если параметр "Format" не указан, дата выводится в формате "dd.mm.yyyy hh:nn:ss", для последнего доступа — "dd.mm.yyyy".
    Формат соответствует The Bat!
    Пример:
    %XMP_FileTime("C:\Test.txt","C","mm/dd/yyyy, hh:nn) Uhr
    %XMP_FileTime("C:\Test.txt","M")
    Вывод:
    08/15/2025, 17:27 Uhr
    15.08.2025 18:02:29
    %XMP_GetPath(Path) Определяет каталог, указанный в "Path".
    Доступные "Paths":
    TBWork -> Рабочий каталог The Bat!
    WinDir -> Каталог Windows
    SysDir -> Системный каталог
    MyDesktop -> Каталог рабочего стола текущего пользователя
    MyFiles -> Каталог "Мои документы" текущего пользователя
    MyRecent -> Последние файлы текущего пользователя
    MyTemp -> Временный каталог текущего пользователя
    Дополнительно можно использовать имена "Shell Folders" из реестра, например "AppData", "Lokal Settings", "Local AppData".
    Пример:
    %XMP_GetPath("TBWork")
    %XMP_GetPath("MyTemp")
    %XMP_GetPath("WinDir")
    %XMP_GetPath("MyFiles")
    %XMP_GetPath("Local Settings")
    Вывод:
    C:\Документы и настройки\Gaijin\Anwendungsdaten\The Bat!\
    C:\Документы и настройки\Gaijin\Локальные настройки\Temp\
    C:\WINNT\
    C:\Документы и настройки\Gaijin\Мои документы\
    C:\Документы и настройки\Gaijin\Локальные настройки\
    %XMP_IniGet(Filename, Section, Entry,
    [Default])
    Читает значение из INI-файла. Если возникает ошибка, значение пустое или отсутствует, возвращается "Default".
    Если "Default" не указан, используется пустая строка.
    Максимальный размер читаемых данных — 10 КБ.
    Пример:
    %XMP_IniGet("C:\Test.ini","Settings","Path")
    %XMP_IniSet(Filename, Section, Entry, Value) Записывает "Value" в INI-файл. Если запись успешна, возвращается пустое значение. В случае ошибки выводится ' *** Aktion nicht erfolgreich *** '.
    Пример:
    %XMP_IniSet("C:\Test.ini","Settings","Path","C:\Test\")
    %XMP_TempDir Определяет временный каталог операционной системы.
    Пример:
    %XMP_TempDir
    Вывод:
    C:\DOKUME~1\Gaijin\LOKALE~1\Temp\
    %XMP_TempFile Определяет свободное имя файла для временной записи.
    Пример:
    %XMP_TempFile
    Вывод:
    C:\DOKUME~1\Gaijin\LOKALE~1\Temp\XMP4C6.tmp

    0  

    Дата и время

    Макрос Описание
    %XMP_Age(BirthDate, [Date]) Определяет количество полных лет между "BirthDate" и указанной "Date". Если второе значение даты не указано, используется текущая дата.
    Пример:
    %XMP_Age("15.01.1960", "14.01.2006")
    %XMP_Age("15.01.1960", "15.01.2006")
    Вывод:
    45
    46
    %XMP_TimeAdd(Time, Value, [Type],
    [OutputFormat])
    Добавляет к "Time" (дата и время) указанное "Value". При отрицательном значении время вычитается. Отрицательные значения должны быть в кавычках!
    "Time" должно быть в формате "dd.mm.yyyy hh:nn:ss" или "dd.mm.yyyy"!
    Если "Type" не указан, добавляются дни. Возможные значения "Type":
    D -> Дни (по умолчанию)
    W -> Недели
    M -> Месяцы
    Y -> Годы
    H -> Часы
    N -> Минуты
    S -> Секунды
    Аргумент "OutputFormat" задаёт формат возвращаемого времени. Если не указан, используется формат "dd.mm.yyyy hh:nn:ss".
    Пример:
    %XMP_TimeAdd("12.10.2004 19:04:23",3)
    %XMP_TimeAdd("12.10.2004 19:04:23",3,"H")
    %XMP_TimeAdd("12.10.2004 19:04:23",3,"N","mm/dd/yyyy hh:nn")
    %XMP_TimeAdd("12.10.2004 19:04:23","-3")
    Вывод:
    15.10.2004 19:04:23
    12.10.2004 22:04:23
    10/12/2004 19:07
    09.10.2004 19:04:23
    %XMP_TimeBeats([Time]) Определяет текущее интернет-время, либо интернет-время, основанное на указанной "Time".
    "Time" должно быть в корректном формате, например "hh:nn", "hh:nn:ss" или "dd.mm.yyyy hh:nn:ss", и в UTC (GMT)!
    Пример:
    %XMP_TimeBeats
    %XMP_TimeBeats("20:15")
    %XMP_TimeBeats("12.10.2004 11:00:00")
    %XMP_TimeBeats("24.12.2004 11:00:00")
    Вывод:
    040
    885
    500
    500
    %XMP_TimeBias Определяет разницу между установленной временной зоной и UTC и возвращает её в формате, используемом для писем (+/-hhnn).
    Пример:
    %XMP_TimeBias
    Вывод:
    +0200
    %XMP_TimeCalc(Time, Bias, [LocalFromTo],
    [OutputFormat])
    Вычисляет новое время на основе указанного "Bias" из указанного "Time".
    "Bias" может быть указан в формате "+/-hhnn" или как сокращение названия часового пояса, например "CEST" или "MEZ". Список поддерживаемых зон на странице "TimeZones".
    Аргумент "LocalFromTo" определяет, вычислять ли новое время из локального времени или в локальное время. По умолчанию — из локального времени в другое.
    Аргумент "OutputFormat" задаёт формат возвращаемого времени. Если не указан, используется формат "dd.mm.yyyy hh:nn:ss".
    Пример:
    %XMP_TimeCalc("19:45:00","+0200",0,"hh:nn:ss")
    %XMP_TimeCalc("19:45:00","+0200",1,"hh:nn:ss")
    %XMP_TimeCalc("19:45:00","CEST",1,"hh:nn:ss")
    Вывод:
    17:45:00
    21:45:00
    21:45:00
    %XMP_TimeDiff(Time1, [Time2], [Type], [Format]) Определяет промежуток времени между "Time1" и "Time2".
    "Time" должно быть в формате "dd.mm.yyyy hh:nn:ss", "dd.mm.yyyy" или "hh:nn:ss".
    Если "Time2" меньше "Time1", разница всё равно выводится положительным числом. Если "Time2" не указано, используется текущее время.
    Если "Type" не указан, вычисляется количество дней.
    Если "Type" = "X", вычисляются прошедшие дни, часы, минуты и секунды и отображаются в формате "Format".
    Аргумент "Format" содержит обозначения для единичного и множественного числа и разделитель. Элементы разделяются "|".
    Аргумент "Y" не подходит для расчёта возраста, так как високосные годы вычисляются с дробными числами, но возвращается только целое количество лет. Для возраста использовать %XMP_Age.
    Возможные значения "Type":
    D -> Дни (по умолчанию)
    W -> Недели
    M -> Месяцы
    Y -> Годы
    H -> Часы
    N -> Минуты
    S -> Секунды
    X -> Дни, часы, минуты, секунды
    Пример:
    %XMP_TimeDiff("19:45:00","21:53:00","H")
    %XMP_TimeDiff("12.10.2004","24.12.2004")
    %XMP_TimeDiff("01.01.2004","12.10.2004")
    ---
    %XMP_TimeDiff("01.01.2004 12:00:00","08.01.2004 11:21:32","X")
    %XMP_TimeDiff("01.01.2004","12.10.2004 23:07:11","X",%-
    " Day| Days| Hr.| Hrs.| Min.| Mins.| Sec.| Secs.|, ")
    %XMP_TimeDiff("01.01.2004","19.08.2004 10:30:01","X",%-
    " Day | Days |h|h|m|m|s|s|")
    %XMP_TimeDiff("01.01.2004 12:00:00","08.01.2004 12:21:00","X")
    Вывод:
    1
    2
    73
    285
    ---
    6 дней, 23 часа, 21 минута, 32 секунды
    285 дней, 23 ч, 7 мин, 11 сек
    231 день 10ч30м1с
    7 дней, 21 минута
    %XMP_TimeParse(TimeString, [UTC],
    [OutputFormat])
    Определяет по "TimeString", как указано в заголовке письма, форматируемое время.
    Если "UTC"=1, вычисляется UTC по Bias, иначе выводится локальное время, как в "TimeString". Список поддерживаемых зон — на странице "TimeZones".
    Аргумент "OutputFormat" задаёт формат вывода. Если не указан, используется "dd.mm.yyyy hh:nn:ss".
    Пример:
    %XMP_TimeParse("Tue, 5 Oct 2024 13:44:26 +0200 (CEST)")
    %XMP_TimeParse("Tue, 5 Oct 2024 13:44:26 +0200 (CEST)",1)
    Исходная строка:
    Tue, 5 Oct 2024 13:44:26 +0200 (CEST)
    Вывод:
    05.10.2024 13:44:26
    05.10.2024 11:44:26
    %XMP_TimeQuart([Date], [Output]) Определяет по "Date", в зависимости от "Output", квартал или время года.
    Если "Date" не указано или некорректно, используется текущая дата.
    Если "Output"=1, возвращается время года текстом; если "Output"=0 или не указано — квартал.
    Пример:
    %XMP_TimeQuart("20.3.2004"). Квартал
    %XMP_TimeQuart("5.4.2004"). Квартал
    %XMP_TimeQuart("20.3.2004",1)
    %XMP_TimeQuart("21.3.2004",1)
    Вывод:
    1 квартал
    2 квартал
    зима
    весна

    0  

    Диалоги и сообщения

    Макрос Описание
    %XMP_DlgFolder([Text], [Advanced],
    [Selection])
    Отображает диалог выбора папки и возвращает выбранный путь.
    С помощью "Text" можно задать текст, который будет отображаться в диалоге.
    Параметр "Advanced" определяет форму диалога. Если значение 1, используется новая форма диалога, где, в частности, можно создавать новые папки. По умолчанию 0 — простая форма диалога.
    С помощью параметра "Selection" можно задать папку, которая будет выделена по умолчанию.
    Во время отображения диалога The Bat! НЕ блокируется! Текст можно редактировать, а курсор перемещать.
    Пример:
    Папка: %XMP_DlgFolder("Выберите папку...",1)
    Папка: %XMP_DlgFolder("Выберите папку Windows...",0,"C:\Windows")
    %XMP_DlgInput([Description], [DefaultText]) Открывает диалоговое окно с текстовым полем и возвращает введённый текст.
    Параметр "Description" задаёт текст подсказки, который отображается в окне. Можно использовать до 3 строк. Для ввода переносов строк и специальных символов описание должно быть в том же формате, что и макрос "%XMP_StrC".
    Параметр "DefaultText" задаёт предзаполненное значение в текстовом поле.
    Можно вводить до 1024 символов.
    После ввода текста вместо кнопки "Ok" можно нажать Enter. Внимание: клавиша ESC не отменяет диалог, а действует как Enter!
    При нажатии "Cancel" возвращается пустая строка.
    Во время отображения диалога The Bat! НЕ блокируется! Текст можно редактировать, а курсор перемещать. Диалог остаётся верхним окном.
    Пример:
    Имя: %XMP_DlgInput("Имя:\w(Строка2)")
    Тел.: %XMP_DlgInput("Телефон:","555-123456789")
    При вводе "Карл Хубер" в первом диалоге и подтверждении второго диалога, получается:
    Пример-вывод:
    Имя: Карл Хубер
    Тел.: 555-123456789
    %XMP_DlgOpen([MultiSelect], [Title],
    [Folder], [Filter], [Options])
    Отображает диалог открытия файла Windows и возвращает выбранные файлы.
    Все параметры необязательны. Вызов без параметров показывает диалог с настройками по умолчанию и позволяет выбрать один файл.
    Если "MultiSelect" = 1, можно выбрать несколько файлов. Имена файлов (с путями) разделяются символом |.
    "Title" задаёт заголовок окна, по умолчанию "Open file...".
    Параметр "Folder" задаёт текущую папку диалога.
    С помощью "Filter" можно задать фильтр. По умолчанию показываются все файлы (*.*). Формат: "Описание|Маска". Например, "*.txt" для всех текстовых файлов.
    Параметр "Options" задаёт поведение диалога. Возможные значения:
    F -> Файл должен существовать
    P -> Папка должна существовать
    C -> При создании нового файла спросить подтверждение
    По умолчанию "FP", если параметр не указан.
    %XMP_FrmDlg(Filename, [Title], [Width],
    [Height], [Resizable], [Maximizable])
    Создаёт пользовательскую форму. Начальные значения можно передать макросом "%XMP_FrmDlgDef". После заполнения можно получить введённые данные макросом "%XMP_FrmDlgRet".
    Первый параметр "Filename" — имя HTML-файла формы. "Title" задаёт заголовок окна. "Width" и "Height" — размеры окна. "Resizable"=1 разрешает изменение размера. "Maximizable"=1 разрешает максимизацию, требует "Resizable"=1.
    Макрос возвращает 1, если пользователь подтвердил ввод, или 0, если форма закрыта другим способом (кнопка Cancel, Alt+F4, крестик).
    После этого данные можно получить через "%XMP_FrmDlgRet".
    %XMP_FrmDlgDef

    %XMP_FrmDlgDef(Name, Value, [Name],
    [Value], ...)
    В форме можно использовать плейсхолдеры, которые заменяются значениями, переданными этим макросом. Плейсхолдеры начинаются с "%XMP_DEF:" и заканчиваются "%".
    Можно передавать любое количество пар имя-значение. "Name" должен соответствовать плейсхолдеру в форме, например, для "%XMP_DEF:first_name%" имя = "first_name".
    Вызов без параметров очищает все ранее заданные значения.
    %XMP_FrmDlgRet([Name], [Default]) Возвращает значение поля формы. "Name" соответствует атрибуту HTML "name" поля. Если поле пустое или чекбокс не выбран — данные не возвращаются. Параметр "Default" задаёт значение по умолчанию для пустого поля.
    Без параметров возвращаются все данные формы в кодированном виде (URL-кодировка для POST).
    %XMP_MsgBox(Text, [Title], [Style],
    [OkReturn], [Button1], [Button2],
    [Button3])
    Показывает окно сообщения с текстом "Text". Текст может содержать те же управляющие символы, что и макрос "XMP_StrC".
    Если "Title" не указан, используется имя плагина ("Extended Macro Plugin").
    "Style" задаёт вид окна. Параметры через запятую:
    Иконка:
    ii -> Информация
    iw -> Предупреждение
    iq -> Вопрос
    is -> Стоп / Ошибка
    Кнопки:
    o -> OK
    oc -> OK, Отмена
    rc -> Повторить, Отмена
    ari -> Отмена, Повторить, Игнорировать
    yn -> Да, Нет
    ync -> Да, Нет, Отмена
    Стандартная кнопка: b1 -> 1-я кнопка
    b2 -> 2-я кнопка
    b3 -> 3-я кнопка
    b4 -> 4-я кнопка
    Вид окна:
    ma -> Привязано к приложению
    ms -> Привязано к системе
    mt -> Привязано к задаче
    tm -> Всегда сверху
    Возвратные значения:
    O -> OK
    C -> Отмена
    A -> Прервать
    R -> Повторить
    I -> Игнорировать
    Y -> Да
    N -> Нет
    Если "OkReturn" = 1, возвращается "O", иначе для OK возвращается пусто.
    Параметры "Button1-3" задают текст кнопок, альтернативный текст заменяет стандартные подписи (Да, Нет, OK, Отмена). Остальные параметры (вид окна, иконка) учитываются.
    Пример:
    %XMP_MsgBox("Тест\nТест")%-
    %XMP_MsgBox("Тест\nТест","Заголовок","oc",1)%-
    %XMP_MsgBox("Ошибка","Ошибка","is,oc,b2,ms,tm",1)%-
    %XMP_MsgBox("Как вам XMP?","Оценка","iq,b2,ms,tm",1,"Хорошо","Отлично")
    %XMP_MultiDlg(Title, Text, Type, Entries,
    ResultType, [OkButton], [CancelButton])
    Показывает модальный диалог с выбором из списка. Можно выбрать один или несколько элементов.
    "Title" и "Text" задаются произвольно. "OkButton" и "CancelButton" — подписи кнопок.
    "Type" = 1 — только один элемент (радиокнопки), 0 — множественный выбор.
    "Entries" — список элементов через |. Каждый элемент может содержать ID, отметку выбора и текст, через $. Формат:
    ID1$$Line1|ID2$X$Line2|ID3$$Line3
    "ResultType" определяет формат возврата:
    0 -> имя элемента
    1 -> номер элемента (с 1)
    2 -> ID элемента
    При множественном выборе результаты через |
    %XMP_TextDlg(Title, Text, Default,
    [Length], [OkButton], [CancelButton])
    Показывает модальный диалог с текстовым полем.
    "Title", "Text" и "Default" задаются произвольно. "OkButton" и "CancelButton" — подписи кнопок.
    "Length" — максимальное количество символов, перенос считается за 2 символа.
    Отображается счётчик в формате "введено / максимум (осталось)".

    0  

    IDN — международные домены

    Macro Описание
    %XMP_AddrToACE(EmailAddress) Конвертирует один или несколько национальных адресов электронной почты в международный формат, если это необходимо.
    Пример:
    %_A=#%XMP_AddrToACE("karl@müller.at")#%-
    %_A
    %XMP_AddrToIDN("%_A")

    %XMP_AddrToACE("franz@huber.de")
    %XMP_AddrToIDN("franz@huber.de")
    Вывод:
    karl@xn--mller-kva.at
    karl@müller.at

    franz@huber.de
    franz@huber.de
    %XMP_AddrToIDN(EmailAddress) Конвертирует один или несколько международных адресов электронной почты в национальный формат, если это необходимо.
    Пример:
    %_A=#%XMP_AddrToACE("karl@müller.at")#%-
    %_A
    %XMP_AddrToIDN("%_A")

    %XMP_AddrToACE("franz@huber.de")
    %XMP_AddrToIDN("franz@huber.de")
    Вывод:
    karl@xn--mller-kva.at
    karl@müller.at

    franz@huber.de
    franz@huber.de
    %XMP_DomToACE(Domain) Конвертирует домен в Punycode-строку, если это необходимо. Этот формат нужен для интернационализированных доменных имен.
    Пример:
    %_A=#%XMP_DomToACE("www.müller.de")#%-
    %_A
    %XMP_DomToIDN("%_A")

    %XMP_DomToACE("www.huber.de")
    %XMP_DomToIDN("www.huber.de")
    Вывод:
    www.xn--mller-kva.de
    www.müller.de

    www.huber.de
    www.huber.de
    %XMP_DomToIDN(Domain) Конвертирует кодированный интернационализированный домен в обычное доменное имя, если это необходимо.
    Пример:
    %_A=#%XMP_DomToACE("www.müller.de")#%-
    %_A
    %XMP_DomToIDN("%_A")

    %XMP_DomToACE("www.huber.de")
    %XMP_DomToIDN("www.huber.de")
    Вывод:
    www.xn--mller-kva.de
    www.müller.de

    www.huber.de
    www.huber.de
    %XMP_IDNList(AddressList) Форматирует "AddressList", как это возвращается макросами "%TO", "%FROM" или "%BCC", и при необходимости конвертирует IDN-адреса.
    Пример:
    %_TMP="%XMP_IDNList('%TO')"%-
    %TO=""%-%TO="%_TMP"

    0  

    Письма и заголовки

    Macro Description
    %XMP_ClearLines(Text, [Max], [Min],
    [QuoteSpace])
    Удаляет из "Text" все лишние пустые строки.
    Аргумент "Max" задаёт максимальное количество пустых строк, которые могут встречаться в тексте. Если число превышено, лишние строки заменяются количеством, указанным в "Min".
    По умолчанию "Max" = 3, "Min" = 2.
    Если "QuoteSpace" = 1, каждая пустая строка заполняется пробелом, чтобы символы цитирования не прерывались пустыми строками.
    Пример:
    %XMP_ClearLines("%TEXT",3,2)
    Оригинальный текст:
    Line 1

    Line 4


    Line 10
    Вывод:
    Line 1

    Line 4

    Line 10
    %XMP_Gender([FirstName]) Пытается определить пол по указанному "FirstName".
    Если "FirstName" не указан, сначала ищется пол получателя в адресной книге ("To" поля сообщения). Если не найдено, определяется пол по имени получателя.
    Макрос возвращает "0" для организации, "1" для мужчины и "2" для женщины. Если пол не указан, возвращается "1" для мужчины. В редких случаях для организации возвращается "0" ("Family...").
    %XMP_GetLang Определяет язык исходного сообщения.
    Используются следующие данные:
    • Заголовок "X-Language:"
    • Заголовок "Content-Language:"
    • Заголовок "X-Accept-Language:"
    • Страна получателя из адресной книги TB!
    • Регулярное выражение
    Возвращаемое значение, регулярное выражение и данные для сравнения можно настроить в файле "XMP.ini" в секции "[CountryLanguage]".
    Пример:
    %XMP_GetLang
    Вывод:
    GE
    %XMP_HdrMailer([Standard]) Определяет почтовую программу отправителя из заголовка.
    Если программа не найдена, возвращается "Standard". Если "Standard" не указан, возвращается пустая строка.
    Пример:
    %XMP_HdrMailer
    Пример выводов:
    Microsoft Outlook Express 5.00.2615.200
    The Bat! v11.4.2 Professional
    %XMP_HdrRcvTime([Entry], [LocalTime],
    [OutputFormat])
    Определяет время из строки Received заголовка, указанное в "Entry".
    "Entry" может быть 0 или 1, где 0 — время первой строки Received (отправки), а 1 — время последней строки Received (получения у своего провайдера). Если "Entry" не указан, берется 0 (отправка).
    Если "LocalTime" = 1, возвращается локальное время. Если "LocalTime" = 0, вычисляется UTC с учетом Bias. Список поддерживаемых часовых поясов указан на странице "Timezones".
    "OutputFormat" задаёт формат возвращаемого времени. Если не указан, формат "dd.mm.yyyy hh:nn:ss".
    Пример:
    %XMP_HdrRcvTime
    %XMP_HdrRcvTime(0)
    %XMP_HdrRcvTime(1)
    %XMP_HdrRcvTime(1,1)
    Вывод:
    27.02.2025 14:56:31
    27.02.2025 14:56:31
    27.02.2025 14:56:28
    27.02.2025 15:56:28
    %XMP_ListAddr(AddressList, Entry) Определяет из списка адресов Email ("AddressList"), например "%OTO", определённый адрес ("Entry").
    Для извлечения имени можно использовать макрос "XMP_ListName". "XMP_ListCount" возвращает количество доступных записей. Если "Entry" не указан, берётся 0.
    Пример:
    %XMP_ListAddr("%OTO",1)
    %XMP_ListCount(AddressList) Возвращает количество адресов в списке Email ("AddressList"), например "%OTO".
    Для извлечения имени используйте "XMP_ListName", для Email — "XMP_ListAddr".
    Пример:
    %XMP_ListAddr("%OTO","%XMP_ListCount('%OTO')")
    %XMP_ListName(AddressList, Entry) Возвращает имя по записи "Entry" из списка Email ("AddressList"), например "%OTO".
    Если имя не найдено, возвращается Email.
    Для извлечения адреса используйте "XMP_ListAddr". "XMP_ListCount" возвращает количество записей.
    Пример:
    %XMP_ListName("%OTO",1)
    %XMP_MsgID([MID]) Возвращает Message-ID исходного сообщения.
    Если "MID" = 1, текст "mid:" перед ID опускается.
    Если "MID" = 2, вместо MID выводится содержимое заголовка "References".
    Если "MID" = 3, выводится новая ссылка: "References" + "Message-ID".
    Пример:
    <%XMP_MsgID>
    %XMP_MsgID(0)
    %XMP_MsgID(1)
    %XMP_MsgID(2)
    %XMP_MsgID(3)
    Вывод:
    mid:779938887.20040931000449@gmx.de
    779938887.20040931000449@gmx.de
    <1501856080.20040930205831@gmx.de> <872297055.20040930235903@gaijin.at>
    <1501856080.20040930205831@gmx.de> <872297055.20040930235903@gaijin.at> <779938887.20040930235945@gaijin.at>
    %XMP_NoSubj([Subject]) Если у текущего сообщения пустой Subject, возвращается "Subject". Иначе — текущий Subject.
    Если "Subject" не указан, выводится "(без темы)".
    Пример:
    %XMP_NoSubj("EMPTY")%-
    %SUBJ="%XMP_NoSubj"
    В ответе на сообщение с пустым Subject пример выведет "Re: EMPTY", новый Subject станет "Re: (без темы)".
    %XMP_NoTo([Recipient]) Если поля "TO" и "CC" пусты, возвращается "Recipient". Иначе — содержимое "TO".
    Если "Recipient" не указан, выводится "(скрытые получатели)".
    Пример:
    %XMP_NoTo("SECRET")%-
    %TO="%XMP_NoTo"
    В ответе на сообщение с пустыми полями получателей пример выведет "SECRET", новый получатель — "(скрытые получатели)".
    %XMP_QuoteAdd(Text, [Char]) Добавляет перед каждой строкой в "Text" указанный символ цитирования.
    Если "Char" не указан, используется >.
    Пример:
    %XMP_QuoteAdd("%TEXT")
    Вывод:
    > Line 1
    > Line 2
    > Line 3
    %XMP_QuoteDel(Text, [MaxLength], [Char]) Удаляет все символы цитирования из "Text".
    "MaxLength" задаёт максимальную длину символа цитирования, по умолчанию 6.
    "Char" — символ цитирования, по умолчанию >. Если после него пробел, он также удаляется.
    Пример:
    %XMP_QuoteDel("%TEXT",3)
    Текст:
    >>> Line 1
    A> AB> ABC> AB> Line 2
    > > > > > Line 3
    >> >> Line 4
    Вывод:
    Line 1
    ABC> AB> Line 2
       Line 3
    Line 4
    Во 2-й строке после "ABC>" ничего не удаляется, так как длина 4 > MaxLength 3.
    В 3-й строке пробел после символа цитирования удаляется, остальные два пробела сохраняются.
    %XMP_Sig Возвращает разделитель подписи (без перевода строки). Корректный разделитель: "-- " (минус, минус, пробел).
    Пример:
    %XMP_Sig
    С уважением
    Вывод:
    --
    С уважением
    %XMP_SubjClean([Subject], [Alternative]) Удаляет все пометки "Ответ:" и "Пересл:" в начале Subject.
    Распознаются пометки:
    • antw
    • antwort
    • aw
    • betr
    • betrifft
    • betreff
    • forw
    • fw
    • fwd
    • ha
    • rcpt
    • re
    • ref
    • war
    • was
    • wg
    • wtr
    Дополнительно можно указать свои через "Alternative", разделяя |.
    Если "Subject" не указан, используется текущий Subject.
    Пример:
    %XMP_SubjClean("Re: Fwd[3]: Re[5]: Odp: Wtr: Betr: DP: OriginalSubject","dp|odp")
    Вывод:
    OriginalSubject
    %XMP_SubjCount([NoFwds], [Subject],
    [AltRe], [AltFwd])
    Считает количество пометок "Ответ" и "Пересл" в начале Subject.
    Распознаются:
    • antw
    • antwort
    • aw
    • betr
    • betrifft
    • betreff
    • forw
    • fw
    • fwd
    • ha
    • rcpt
    • re
    • ref
    • war
    • was
    • wg
    • wtr

    Дополнительно можно указать свои через "AltRe" (ответ) и "AltFwd" (пересл), разделяя |.
    Если "NoFwds" = 1, пересылки не считаются.
    Если "Subject" не указан, используется текущий Subject.
    Пример:
    %XMP_SubjCount(0,"Re: Fwd[3]: Re[5]: Wtr: Betr: OriginalSubject")
    %XMP_SubjCount(1,"Re: Fwd[3]: Re[5]: Wtr: Betr: OriginalSubject")
    Вывод:
    11
    7
    %XMP_UrlAttach(URL, FileName) Создаёт интернет-ярлык по "URL" и прикрепляет его к сообщению с указанным "FileName". Расширение ".url" добавляется автоматически.
    Пример:
    %XMP_UrlAttach("https://www.ritlabs.com/","My Website")

    0  

    Строки

    Макрос Описание
    %XMP_ArgCount(Text, [Delimiter],
    [QuoteChar])
    Определяет количество элементов в "Text", разделённых указанными "Delimiter". Элементы внутри "QuoteChar" игнорируются.
    Если "Delimiter" не указан, используется пробел. Если "QuoteChar" не указан, используется стандартная кавычка (").
    Пример:
    %XMP_ArgCount(|"ABC 123 XYZ"789 test1 test2|)
    %XMP_ArgCount(|"ABC,123,XYZ" 789,test1,test2|,|,|)
    %XMP_ArgCount(|'ABC#123#XYZ" 789#test1:test2|,|#:|,|'"|)
    Вывод:
    3
    3
    3
    %XMP_ArgItem(Text, Item [Delimiter],
    [QuoteChar])
    Возвращает указанный "Item" из "Text", разделённого "Delimiter". Элементы внутри "QuoteChar" игнорируются.
    Если "Delimiter" не указан, используется пробел. Если "QuoteChar" не указан, используется стандартная кавычка (").
    Пример:
    %XMP_ArgItem(|"ABC 123 XYZ"789 test1 test2|,|2|)
    %XMP_ArgItem(|"ABC,123,XYZ" 789,test1,test2|,|3|,|,|)
    %XMP_ArgItem(|'ABC:123#XYZ" 789#test1:test2|,|1|,|#:|,|'"|)
    Вывод:
    test1
    test2
    'ABC:123#XYZ" 789
    %XMP_Decode(Text, Method) Декодирует "Text" в формате MIME (Base64) или Quoted-Printable.
    Аргумент "Method" указывает формат: Base64 ("B") или Quoted-Printable ("Q").
    Пример:
    %XMP_Decode("RGV1dHNjaGxhbmQgaXN0IHNjaPZu","B")
    %XMP_Decode("est une soci=E9t=E9 Suisse","Q")
    Вывод:
    Deutschland ist schön
    est une société Suisse
    %XMP_Encode(Text, Method) Кодирует "Text" в формате MIME (Base64) или Quoted-Printable.
    Аргумент "Method" указывает формат: Base64 ("B") или Quoted-Printable ("Q").
    Пример:
    %XMP_Encode("Deutschland ist schön","B")
    %XMP_Encode("est une société Suisse","Q")
    Вывод:
    RGV1dHNjaGxhbmQgaXN0IHNjaPZu
    est une soci=E9t=E9 Suisse
    %XMP_Grep(Text, RegExp, [Output]) Ищет "Text" построчно с использованием регулярного выражения "RegExp".
    Аргумент "Output" определяет, какие строки выводить:
    M -> строки, совпадающие с RegExp (по умолчанию)
    N -> строки, не совпадающие с RegExp
    B -> строки до первого совпадения
    A -> строки после первого совпадения
    I -> вместе с "A" или "B", включает строку с совпадением
    Внимание: кавычки заменяются на 0x02 в коде. Для поиска кавычек используйте "\x02" вместо "\x22".
    Пример:
    Все строки с "http://www.":
    %XMP_Grep("%TEXT","http:\/\/www\.")
    Вывод:
    > Unsere URL lautet https://www.ritlabs.com/
    Auf https://www.ritlabs.com/ finden Sie auch das Extended Macro Plugin
    https://www.ritlabs.com/
    %XMP_HtmlDec(Text, [Options]) Декодирует HTML-сущности в "Text" в соответствующие символы.
    Аргумент "Options" определяет способ:
    E -> HTML-сущности в национальные символы (по умолчанию)
    H -> HTML-спецсимволы (>, <, ", &)
    Пример:
    %XMP_HtmlDec('&lt;b&gt;&quot;àéî€ &amp; &auml;&ouml;&uuml;&szlig;
    &quot;&lt;/b&gt;')
    %XMP_HtmlDec('&lt;b&gt;&quot;àéî€ &amp; &auml;&ouml;&uuml;&szlig;
    &quot;&lt;/b&gt;','H')
    %XMP_HtmlDec('&lt;b&gt;&quot;àéî€ &amp; &auml;&ouml;&uuml;&szlig;
    &quot;&lt;/b&gt;','EH')
    Вывод:
    &lt;b&gt;&quot;àéî€ &amp; äöüß&quot;&lt;/b&gt;
    <b>"&#224;&#233;&#238;&#8364; & &auml;&ouml;&uuml;&szlig;&quot;</b>
    <b>"àéî€ &amp; äöüß"</b>
    %XMP_HtmlEnc(Text, [Options]) Кодирует специальные символы в "Text" в HTML-сущности.
    Аргумент "Options" определяет способ:
    E -> национальные символы в именованные сущности (по умолчанию)
    U -> национальные символы в числовые коды
    H -> HTML-спецсимволы
    Пример:
    %XMP_HtmlEnc('<b>"àéî€ & äöüß"</b>')
    %XMP_HtmlEnc('<b>"àéî€ & äöüß"</b>','U')
    %XMP_HtmlEnc('<b>"àéî€ & äöüß"</b>','H')
    %XMP_HtmlEnc('<b>"àéî€ & äöüß"</b>','EH')
    %XMP_HtmlEnc('<b>"àéî€ & äöüß"</b>','UH')
    Вывод:
    <b>&quot;&agrave;&eacute;&icirc;&euro; &amp; &auml;&ouml;&uuml;
    &szlig;&quot;</b>
    <b>&quot;&#224;&#233;&#238;&#8364; &amp; &#228;&#246;&#252;&#223;
    &quot;</b>
    &lt;b&gt;&quot;àéî€ &amp; äöüß&quot;&lt;/b&gt;
    &lt;b&gt;&quot;&agrave;&eacute;&icirc;&euro; &amp; &auml;&ouml;
    &uuml;&szlig;&quot;&lt;/b&gt;
    &lt;b&gt;&quot;&#224;&#233;&#238;&#8364; &amp; &#228;&#246;
    ü&#223;&quot;&lt;/b&gt;
    %XMP_LineBtw(Text, Start, End,
    [StartPos, EndPos])
    Возвращает часть строки "Text" между "Start" и "End".
    "StartPos" и "EndPos": 1 — в начале или в конце строки; 0 или отсутствие — искать по всему тексту.
    Пример-текст:
    Name: Huber, Karl
    Ort: 1234 Stadt S/N: 173993783892.TEST
    Пример:
    %XMP_LineBtw("%TEXT","Name:",", ",0,1)
    %XMP_LineBtw("%TEXT","Ort:","",0,0)
    %XMP_LineBtw("%TEXT","S/N:",".test",0,0)
    Вывод:
    Huber
    1234 Stadt
    173993783892
    %XMP_REIsMatch(Text, Search,
    [StartPos], [IgnoreCase])
    Ищет в "Text" "Search" с регулярным выражением (PCRE). Возвращает 1 если найдено, иначе 0.
    "StartPos" — позиция начала поиска, 0 — с начала текста.
    "IgnoreCase" = 1 — игнорировать регистр.
    Пример:
    %XMP_REIsMatch("abc","b")
    %XMP_REIsMatch("abc","b",2)
    %XMP_REIsMatch("abc","B",0,1)
    Вывод:
    1
    0
    1
    %XMP_RERepl(Text, Search, New,
    [IgnoreCase])
    Ищет "Search" в "Text" с регулярным выражением (PCRE) и заменяет на "New".
    "IgnoreCase" = 1 — игнорировать регистр.
    Пример:
    %XMP_RERepl("AbC AbC AbC","(b)","[$1]")
    Вывод:
    A[b]C A[b]C A[b]C
    %XMP_ReX(Text, Pattern, [SubPatt]) Упрощённое макро RegExp.
    "Text" — текст, "Pattern" — регулярное выражение, "SubPatt" — возвращаемый суб-паттерн. По умолчанию — первый.
    Внимание: кавычки заменяются на 0x02. Для поиска кавычек используйте "\x02".
    Пример:
    %XMP_ReX("abc test TEXT abc",".*(test)(\s)(.*)\s.*")
    %XMP_ReX("abc test TEXT abc",".*(test)(\s)(.*)\s.*","0")
    %XMP_ReX("abc test TEXT abc",".*(test)(\s)(.*)\s.*",3)
    Вывод:
    test
    abc test TEXT abc
    TEXT
    %XMP_StrAttach(Text, FileName) Сохраняет "Text" во временный файл с указанным "FileName" и затем добавляет этот файл как вложение к текущему сообщению.
    Если возникает ошибка, возвращается "0", иначе возвращается "1".
    Временный файл после этого НЕ удаляется, так как иначе The Bat! не сможет его найти и добавить как вложение. Только при выгрузке плагина (закрытии The Bat!) все файлы, созданные этим макросом, будут удалены.
    Пример:
    %XMP_StrAttach("%TEXT","Originaltext.txt")
    %XMP_StrC(Text) Выводит "Text", заменяя специальные символы:
    \\ -> Backslash
    \n -> Перевод строки
    \r -> Возврат каретки
    \t -> Табуляция
    \w -> \r\n
    \cCHR -> символ с кодом 000–255, трёхзначный
    \xHH -> hex код 00–FF, двухзначный
    Пример:
    %XMP_StrC("\c034Zeile1\c034\nZeile2\tTabulator\n\nZeile4")
    --
    %XMP_StrC("\x55\x56\x57\x0A\c034XYZ\c034")
    Вывод:
    "Zeile1"
    Zeile2     Tabulator

    Zeile4
    --
    %XMP_StrIns(OriginalText, Text,
    Start/Alignment], [Length])
    Вставляет "Text" в "OriginalText".
    С "Start" задается начальная позиция текста, "Length" обозначает количество символов, которые будут перезаписаны в исходном тексте.
    Стандартное значение "Start" — "1", а "Length" — "0".
    Вместо позиции начала ("Start") можно использовать выравнивание, которое выравнивает "Text" внутри "OriginalText" и при этом перезаписывает его. Возможны следующие варианты выравнивания:
    L -> по левому краю
    R -> по правому краю
    M -> по центру, при нечётном количестве символов текст будет смещен больше влево.
    N -> по центру, при нечётном количестве символов текст будет смещен больше вправо.
    Пример:
    %XMP_StrIns("123456789","ABC")
    %XMP_StrIns("123456789","ABC","R")
    %XMP_StrIns("123456789","ABC","L")
    %XMP_StrIns("123456789","ABC",4)
    %XMP_StrIns("123456789","ABC",4,1)
    %XMP_StrIns("123456789","ABC",4,999)
    Вывод:
    ABC123456789
    123456ABC
    ABC456789
    123ABC456789
    123ABC56789
    123ABC
    %XMP_StrItem(Text, Delimiter, Item) Читает "Item" из "Text", разделённого указанным "Delimiter".
    Пример:
    %XMP_StrItem("123#ABC#XYZ","#",2)
    Вывод:
    ABC
    %XMP_StrItem(Text, Delimiter) Определяет количество элементов в "Text", разделённых "Delimiter".
    Пример:
    %XMP_StrItemCnt("123#ABC#XYZ","#")
    Вывод:
    3
    %XMP_StrLeft(Text, Count) Возвращает определённое "Count" количество символов из "Text", начиная с первого символа.
    Пример:
    %XMP_StrLeft("123456789",3)
    Вывод:
    123
    %XMP_StrLen(Text) Определяет длину указанного текста.
    Пример:
    %XMP_StrLen("ABCEDEF")
    Вывод:
    7
    %XMP_StrLines(Text, [Start], [Count]) Читает из "Text" начиная с строки "Start" определённое "Count" количество строк и возвращает их.
    Если "Start" или "Count" не указаны, предполагается одна строка. Вызов макроса только с текстом вернёт первую строку текста.
    Пример:
    %XMP_StrLines("%TEXT",2,2)
    Вывод:
    Строка2
    Строка3
    %XMP_StrLnCnt([Text]) Определяет количество строк в указанном "Text".
    Если "Text" не указан, используется текст оригинального сообщения.
    Пример:
    %XMP_StrLnCnt
    %XMP_StrLnCnt("")
    %XMP_StrLnCnt("%_VAR")
    Вывод:
    25
    0
    3
    %XMP_StrMid(Text, Start, [Count]) Возвращает определённое "Count" количество символов из "Text", начиная с позиции "Start".
    Если "Count" не указан, возвращаются все символы после "Start".
    Пример:
    %XMP_StrMid("123456789",3,4)
    %XMP_StrMid("123456789",3)
    Вывод:
    3456
    3456789
    %XMP_StrPos(Text, SearchText, [Case]) Определяет позицию первого вхождения "SearchText" в "Text".
    Если "Case" = 1, регистр не учитывается.
    Пример:
    %XMP_StrPos("AbcABCabc","ABC")
    %XMP_StrPos("AbcABCabc","ABC",1)
    Вывод:
    4
    1
    %XMP_StrRepl(Text, Search, New,
    Case], [All])
    Заменяет все вхождения "Search" в "Text" на "New".
    Если "Case" = 1, регистр не учитывается.
    Если "All" = 1, после замены проверяется, не появились ли новые совпадения. При этом учитывается "Case".
    Внимание: При использовании "All" следите, чтобы не возникали бесконечные циклы, например:
    "%XMP_StrRepl("XxXxXxXxXxXxXx","X","x",1,1)"!
    Пример:
    %XMP_StrRepl("AbcABCabc","ABC","Xyz")
    %XMP_StrRepl("AbcABCabc","ABC","Xyz",1)
    %XMP_StrRepl("XxXxXxXxXxXxXx","XX","x",1,1)
    Вывод:
    AbcXyzabc
    XyzXyzXyz
    x
    %XMP_StrRev(Text) Возвращает "Text" в обратном порядке.
    Пример:
    %XMP_StrRev("Hallo")
    Вывод:
    ollaH
    %XMP_StrRight(Text, Count) Возвращает определённое "Count" количество символов из "Text", начиная с конца.
    Пример:
    %XMP_StrRight("123456789",4)
    Вывод:
    6789
    %XMP_StrTr(Text, Search, [Replace],
    [Options])
    Заменяет в "Text" все символы, указанные в "Search", на соответствующие символы в "Replace" по позиции.
    Если "Replace" не указан или пустой, все символы из "Search" удаляются. (Соответствует опции "D".)
    Параметры "Search" и "Replace" должны соответствовать %XMP_StrC. Можно использовать спецсимволы.
    Возможные значения "Options":
    D -> Удаляет все символы из "Search" в "Text". "Replace" игнорируется.
    L -> регистр игнорируется.
    Пример:
    %XMP_StrTr("HALLO","loh","104")
    %XMP_StrTr("HALLO","loh","104","L")
    %XMP_StrTr("Hallo","HL")
    %XMP_StrTr("HALLO","Hl","XXX","DL")
    Вывод:
    HALLO
    4A110
    allo
    AO
    %XMP_StrTrim(Text, [LeftRight],
    [CharTypes])
    Удаляет все пробелы и управляющие символы в начале и конце "Text". Также удаляется символ 160 (0xA0), который в HTML-письмах иногда используется вместо пробела.
    Чтобы удалить пробелы только слева или справа, укажите "L" или "R" в "LeftRight".
    Параметр "CharTypes" задаёт типы символов для удаления:
    (пробел) -> удаляет все пробелы, управляющие символы и символ 160 (0xA0). Это значение по умолчанию.
    A -> удаляет все заглавные буквы
    a -> удаляет все строчные буквы
    1 -> удаляет все цифры
    ! -> удаляет все знаки препинания и печатные спецсимволы
    8 -> удаляет все 8-битные символы
    S -> удаляет все национальные спецсимволы (от 0xBF)
    Можно комбинировать, например "Aa 1" для букв, пробелов и цифр.
    Пример:
    |%XMP_StrTrim("   ABC   ")|
    |%XMP_StrTrim("   ABC   ","L")|
    |%XMP_StrTrim("   ABC   ","R")|
    %XMP_StrTrim("Сумма: 129,- Euro",""," Aa!")
    %XMP_StrTrim("Сумма: 9,90 Euro",""," Aa!")
    Вывод:
    |ABC|
    |ABC   |
    |   ABC|
    129
    9,90
    %XMP_StrWordCnt(Text) Возвращает количество слов в "Text".
    В качестве разделителей используются различные управляющие и знаки препинания: точка, запятая, точка с запятой, восклицательный знак, вопросительный знак, скобки и др.
    Пример:
    %XMP_StrWordCnt("Word1, Word-2!Word3.Word4 Word_5")
    Вывод:
    5
    %XMP_StrWrap(Text, [Width],
    [Alignment])
    Переносит "Text" каждые 70 символов. Если указать "Width", перенос выполняется после указанной ширины.
    В качестве символов переноса распознаются пробелы, табуляции и дефисы. Внутри двойных и одинарных кавычек перенос не выполняется.
    Внутренний макрос %WRAPPED переносит только первый абзац текста. %XMP_StrWrap форматирует весь текст.
    Третий параметр задаёт выравнивание текста. Возможные значения:
    L -> по левому краю (по умолчанию)
    R -> по правому краю
    C -> по центру
    J -> по ширине
    Пример:
    %XMP_StrWrap("%CLIPBOARD",35)
    Вывод:
    В начале каждой макро-описания
    указан синтаксис макроса
    Аргументы в квадратных скобках
    можно опускать. В этом случае
    используются стандартные значения.
    Опускать можно только последние аргументы.
    %XMP_UrlDec(URL) Декодирует в "URL" спецсимволы, ранее закодированные %XMP_UrlEnc.
    Пример:
    %_TMP=#%XMP_UrlEnc("mailto:test@tester.com?subject=Test Subject")#%-
    %_TMP
    %XMP_UrlDec("%_TMP")%-
    Вывод:
    mailto%3Atest%40tester%2Ecom%3Fsubject%3DTest%20Subject
    mailto:test@tester.com?subject=Test Subject
    %XMP_UrlEnc(URL, [Type]) Кодирует в "URL" символы, недопустимые в URL. Можно использовать для "mailto:" ссылок.
    Например, ссылка "mailto:test@tester.com?subject=Das ist ein Test" без кодирования выдаёт только "Das", а с кодированием "mailto:test@tester.com?subject=Das%20ist%20ein%20Test" правильно показывает весь заголовок.
    Аргумент "Type" определяет способ кодирования:
    & -> заменяет все & на "&", иначе используется шестнадцатеричный код
    < или > -> заменяет < и > на "<" и ">", иначе на шестнадцатеричный код
    + -> заменяет пробелы на "+", иначе пробел кодируется как "%20"
    Пример:
    %XMP_UrlEnc("Test & Test")
    %XMP_UrlEnc("Test & Test","&")
    %XMP_UrlEnc("Test & Test","&<")
    %XMP_UrlEnc("Test & Test",">&")
    %XMP_UrlEnc("Test & Test","+&<")
    Вывод:
    Test%20%3Caaa%40bbb%2Ecom%3E%20%26%20Test
    Test%20%3Caaa%40bbb%2Ecom%3E%20&amp;%20Test
    Test%20&lt;aaa%40bbb%2Ecom&gt;%20&amp;%20Test
    Test%20&lt;aaa%40bbb%2Ecom&gt;%20&amp;%20Test
    Test+&lt;aaa%40bbb%2Ecom&gt;+&amp;+Test
    %XMP_XtrEMLs([Text], [Delimiter]) Читает все e-mail адреса из "Text" и возвращает их, разделённые указанным "Delimiter".
    Если "Text" не указан или пуст, используется текст сообщения. Если "Delimiter" не указан, используется перенос строки Windows (0x0D + 0x0A).
    %XMP_XtrURLs([Text], [Delimiter],
    [SearchText])
    Читает все URL из "Text" и возвращает их, разделённые указанным "Delimiter".
    Если "Text" не указан или пуст, используется текст сообщения. Если "Delimiter" не указан, используется перенос строки Windows (0x0D + 0x0A).
    Аргумент "SearchText" задаёт текст внутри URL, по которому определяется длина URL. Найдя "SearchText", макрос ищет первый символ слева и справа от него, который не может быть в URL. По умолчанию "SearchText" = "https://". Можно указать другие значения, например "www." или "ritlabs.com".

    0  

    Разное

    Макрос Описание
    %XMP_Accounts([Global Folders],
    [Separator])
    Возвращает имена учетных записей или глобальные папки The Bat!. По умолчанию в качестве разделителя используется перенос строки Windows (0x0D0A).
    Чтобы макрос корректно определял учетные записи, в рабочем каталоге The Bat! должна находиться файл "AccOrder.CFG". Этот файл создается автоматически, когда учетная запись или глобальная папка переупорядочиваются с помощью и стрелок.
    Если атрибут "Global Folders" имеет значение "1", выводятся только глобальные папки, при значении "2" выводятся и имена учетных записей, и имена глобальных папок. При любом другом значении возвращаются только имена учетных записей.
    Пример:
    Учетные записи:
    %XMP_Accounts

    Глобальные папки:
    %XMP_Accounts(1)
    Пример вывода:
    Учетные записи:
    private@myisp.com
    info@ritlabs.com
    webmaster@ritlabs.com
    Test
    Test-IMAP

    Глобальные папки:
    Service
    Trash
    $JUNK$
    %XMP_Const(Constant, [StrC], [Default]) Считывает значение "Constant" из секции "Const" файла "XMP.ini" и возвращает его. Файл "XMP.ini" должен находиться в том же каталоге, что и плагин.
    С помощью макроса можно хранить длинные или часто используемые тексты. Например, пути, которые используются во многих шаблонах, можно хранить через этот макрос, чтобы при изменении пути не редактировать все шаблоны.
    Можно сохранять тексты до 10 КБ. Чтобы сохранить спецсимволы, например переносы строк, используйте спецсимволы, как указано в макросе "%XMP_StrC". С опциональным аргументом "StrC" эти спецсимволы преобразуются перед выводом.
    Аргумент "Default" задает значение по умолчанию, если константа не найдена или произошла ошибка. Если "Default" не указан, возвращается пустая строка.
    Пример:
    %XMP_Const('Path_QT_Pack')
    %XMP_Const('Test',1)
    Содержимое файла "XMP.ini":
    [Const]
    Path_QT_Pack=C:\WINDOWS\Anwendungsdaten\The Bat!\Vorlagen\QT_Pack
    Test=123\wABC
    Вывод:
    C:\WINDOWS\Anwendungsdaten\The Bat!\Vorlagen\QT_Pack
    123
    ABC
    %XMP_CRC32(Settings, Text)

    %XMP_CRC32(Settings, Files,
    [Template])
    Вычисляет CRC-32 контрольную сумму для "Text" или одного/нескольких "Files".
    Аргумент "Settings" может иметь следующие значения:
    S -> Строка (по умолчанию). Вычисляется CRC-32 указанного "Text" и возвращается.
    F -> Файлы. CRC-32 вычисляется по содержимому указанных "Files". Эти файлы автоматически добавляются как вложения к текущему письму. Файлы должны быть разделены символом "|". Вывод макроса %XMP_DlgOpen можно использовать напрямую.
    N -> Запрещает автоматическое добавление вложений.
    A -> Добавляет результат с именем "Attachments.sfv" как вложение. Формат SFV совместим с Total Commander 7.56a (если не используется собственный шаблон).
    Если задано "S", все остальные параметры игнорируются.
    Параметр "Template" позволяет задать вывод имен файлов и контрольных сумм. В шаблоне "{F}" заменяется на имя файла, "{H}" на CRC32. Если параметр не указан, используется шаблон "{F} {H}".
    CRC-32 совместима с Total Commander, WinZip, WinRAR, PKZIP, ARJ и ZMODEM.
    Пример:
    %XMP_CRC32("S","Hello")
    %_Files="%XMP_DlgOpen(1,'Open')"%-
    %XMP_CRC32("FA","%_Files")%-
    %XMP_CRC32("FN","%_Files","{F} (CRC32: {H})")
    Пример вывода:
    78B31ED5
    Granit.bmp (CRC32: 610F207B)
    Angler.bmp (CRC32: 3B433134)
    Feder.bmp (CRC32: C3571AF8)
    %XMP_For(Variable, From, To, Template) Выполняет "Template" несколько раз подряд. Начиная с числа "From", "Variable" увеличивается до достижения значения "To". В "Template" переменная доступна через "%%_Variable".
    Пример:
    %XMP_For("x",1,3,"Строка %%_x
    ")%-
    %XMP_For("y",4,8,"%%_y. Строка%XMP_StrChar(10)")
    Вывод:
    Строка 1
    Строка 2
    Строка 3
    4. Строка
    5. Строка
    6. Строка
    7. Строка
    8. Строка
    %XMP_MD5(Settings, Text)

    %XMP_MD5(Settings, Files,
    [Template])
    Вычисляет MD5-хеш для "Text" или одного/нескольких "Files".
    Аргумент "Settings" может иметь следующие значения:
    S -> Строка (по умолчанию). MD5 вычисляется для указанного "Text" и возвращается.
    F -> Файлы. MD5 вычисляется для содержимого указанных "Files". Эти файлы автоматически добавляются как вложения к текущему сообщению. Файлы должны быть разделены символом пайпа (|). Вывод макроса %XMP_DlgOpen можно использовать напрямую.
    N -> Запрещает автоматическое добавление вложений.
    A -> Добавляет результат с именем "Attachments.md5" как вложение. Формат MD5-файла совместим с Total Commander 7.56a (если не используется собственный шаблон).
    Если задано "S", все остальные параметры игнорируются.
    С помощью параметра "Template" можно определить вывод имен файлов и хешей. В шаблоне "{F}" заменяется на имя файла, "{H}" на MD5. Если параметр не указан, используется шаблон "{H} *{F}".
    Пример-вывод:
    D1BF93299DE1B68E6D382C893BF1215F
    Granit.bmp (MD5: 1AC5E83598D4F2143B59A2D893C3279A)
    Angler.bmp (MD5: 203EF178BF8B0A8EC34E27E4DEDB6349)
    Feder.bmp (MD5: 3A8B85AB7B415BF3F8AFE285DFE0CE29)
    %XMP_Progress(Fill, Bar, Length,
    Total, Value)
    Рисует индикатор прогресса указанной "Length". "Length" определяет общую длину полосы, которая заполняется символом "Fill". Для отображения прогресса используется символ "Bar". Значение "Total" — это максимальное значение "Value", указывающего прогресс.
    Пример:
    [%XMP_Progress("-","#",25,7,6)]
    [%XMP_Progress(".","X",25,100,50)]
    Вывод:
    [#####################----]
    [XXXXXXXXXXXX.............]
    %XMP_Random([Max])

    %XMP_Random([Min], [Max])
    Генерирует случайное число между "Min" и "Max".
    Если "XMP_Random" вызывается без параметров, возвращается число от 1 до 100.
    Если указан только один аргумент, возвращается число между 1 и "Max".
    Пример:
    %XMP_Random
    %XMP_Random(10)
    %XMP_Random(100,999)
    Вывод:
    78
    3
    732
    %XMP_Rot13(Text) Кодирует и декодирует "Text" с помощью ROT-13.
    Пример:
    %XMP_Rot13("ROT13 Test-Text")
    %XMP_Rot13("EBG13 Grfg-Grkg")
    Вывод:
    EBG13 Grfg-Grkg
    ROT13 Test-Text
    %XMP_Select(Value, Default, Value1,
    Output1, [Value2], [Output2], ...)
    Проверяет, соответствует ли "Value" одному из указанных значений "Value1", "Value2" и возвращает соответствующий "Output". Если значение не найдено, возвращается "Default".
    Пример:
    %_Color="G"%-
    %_Number="3"%-
    %XMP_Select(%_Color,"no color","R","Red","G","Green","B","Blue")
    %XMP_Select(%_Number,"invalid number","1","one","2","two")
    Вывод:
    Green
    invalid number
    %XMP_SHA1(Settings, Text)

    %XMP_SHA1(Settings, Files,
    [Template])
    Вычисляет SHA1-хеш для "Text" или одного/нескольких "Files".
    Аргумент "Settings" может иметь следующие значения:
    S -> Строка (по умолчанию). SHA1 вычисляется для указанного "Text" и возвращается.
    F -> Файлы. SHA1 вычисляется для содержимого указанных "Files". Эти файлы автоматически добавляются как вложения к текущему сообщению. Файлы должны быть разделены символом пайпа (|). Вывод макроса %XMP_DlgOpen можно использовать напрямую.
    N -> Запрещает автоматическое добавление вложений.
    A -> Добавляет результат с именем "Attachments.sha" как вложение. Формат SHA-файла совместим с Total Commander 7.56a (если не используется собственный шаблон).
    Если задано "S", все остальные параметры игнорируются.
    С помощью параметра "Template" можно определить вывод имен файлов и хешей. В шаблоне "{F}" заменяется на имя файла, "{H}" на SHA1. Если параметр не указан, используется шаблон "{H} *{F}".
    Пример:
    %XMP_SHA1("S","Hello")
    %_Files="%XMP_DlgOpen(1,'Open')"%-
    %XMP_SHA1("FA","%_Files")%-
    %XMP_SHA1("FN","%_Files","{F} (SHA1: {H})")
    Вывод:
    59D9A6DF06B9F610F7DB8E036896ED03662D168F
    Granit.bmp (SHA1: DB8FBCE9655C2503FE543E1140B6CD82245D2535)
    Angler.bmp (SHA1: 243B1AA7E2D2613FF3859BEE5022AA09DD48CBC0)
    Feder.bmp (SHA1: 34C9F1B45C5EE190A969823FF455197748CFD3AB)
    %XMP_Until(Variable, To, Template) Выполняет "Template" до тех пор, пока "Variable" не достигнет значения "To". В "Template" переменная доступна через "%%_Variable".
    Пример:
    %XMP_Until("x","3","%%_x=#%%CALC('%%_x + 1')#%%-
    %%_x. Строка%%XMP_StrChar(10)")
    Вывод:
    1. Строка
    2. Строка
    3. Строка
    %XMP_UrlDldFile(URL, FileName) Запускает загрузку файла с "URL" и сохраняет его под именем "FileName".
    "URL" и "FileName" должны содержать полный путь к файлу.
    Макрос возвращает "1" при успешной загрузке и "0" при ошибке.
    Внимание: загружаемый файл не должен быть слишком большим, так как макрос останавливается на время загрузки и не предоставляет возможности отмены.

    0