Строковые макросы

Разные макросы для работы со строками.

%Chr

Параметры

%Chr(номер символа)

Описание

Символ соответствующий указанному ASCII коду. В интервале 1..256.

Пример

%Chr("64")

%CountLines

Параметры

%CountLines(текст)

Описание

Подсчитывает количество строк в тексте. Учитываются даже пустые строки.

Пример

%CountLines("миллион алых роз
из окна видишь ты")

%CutHere

Параметры

%CutHere

Описание

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

Пример

%CutHere

%GetLine

Параметры

%GetLine(номер строки, текст)
%GetLine(номер строки, текст, число строк)

Описание

Извлекает указанную строку из текста. Номер первой строки 1. Если строки с указанным номером не существует, макрос возвращает пустую строку. Третий параметр задает, сколько строк вернуть начиная с указанного Номера строки.

Пример

%GetLine("2","Шла Маша по шоссе
и сосала сушку!")

%InputBox

Параметры

%InputBox
%InputBox(текст-приглашение)
%InputBox(текст-приглашение, значение по умолчанию)

Описание

Выводит окошко для ввода строки. Текст-приглашение это текст, который отобразится в окошке над полем ввода. Значение по умолчанию это то значение, которое будет введено исходно при открытии окна. Если в окне нажать Cancel, венётся также значение по умолчанию.

Внимание!!! Используйте этот макрос только в быстрых шаблонах, вызываемых вручную! Иначе The Bat! может зависнуть.

Пример

%InputBox("Введите заголовок:","Заголовок")

%Numerical

Параметры

%Numerical(число, шаблон 1, шаблон 2, шаблон 3)
%Numerical(число, шаблон 1, шаблон 2 и 3)

Описание

Анализирует число и подставляет его в один из шаблонов вместо символа "^n". Первый шаблон для чисел, заканчивающихся на 1, но не на 11. Второй — для чисел, заканчивающихся на 2, 3, 4, но не на 12, 13, 14. Третий — для остальных.

Если второй и третий шаблон одинаковые, третий можно не указывать.

Пример

%Numerical("18","^n день","^n дня","^n дней")

%Prefix

Параметры

%Prefix(префикс, текст)

Описание

Добавляет префикс в начало каждой строки текста.

Пример

%Prefix("| ","Здесь можно подставить
содержимое буфера, например.")

%ProgressBar

Параметры

%ProgressBar(чёрный, белый, ширина, минимум, максимум, значение)
%ProgressBar(чё рный, белый, ширина, процент)

Описание

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

Определить относительную длину чёрной полосы можно задав минимальное, максимальное и текущее значения, либо указав процент заполнения, как целое число от 0 до 100.

Пример

[%ProgressBar(":"," ","60","0","50","35")]

%RegExp

Параметры

%RegExp(регулярное выражение, текст)
%RegExp(регулярное выражение, текст, маска)

Описание

Выполняет поиск Регулярного выражения в Тексте и возвращает совпадение. Если в Регулярном выражении содержатся вложенные регулярные выражения в скобках, используйте Маску для доступа к ним. $1 в Маске заменится на первое вложенное регулярное выражение и т.д.

Пример

%RegExp("\A(.+)@(.+)\Z","%FromAddr","Пользователь $1 на $2.")

%RegExpReplace

Параметры

%RegExpReplace(регулярное выражение, текст, заменитель)

Описание

Заменяет в Тексте все совпадения с Резулярным выражением на Заменитель.

Пример

%RegExp("\d+","100 поросят","Много")

%SmartQuotes

Параметры

%SmartQuotes
%SmartQuotes(уровень)
%SmartQuotes(уровень, обрезать)

Описание

Замена стандартному макросу %Quotes для цитирования исходного письма. В отличие от оригинала переформатирует цитирование так, чтоб между цитатами разного уровня была одна пустая строка, автоматически удаляет приветствия и подписи из цитируемого текста, удаляет старые цитаты.

Параметр Уровень задаёт, цитаты до какого уровня нужно оставлять (0 или отсутствие параметра — оставить все). Второй параметр Обрезать указывает, нужно ли обрезать приветствие и прощания из цитирования (по умолчанию нужно, 'no' — не нужно).

Чтоб настроить какие приветствия и прощания обрезать, зайдите в Свойства » Настройки… » Модули расширения, выберите MyMacros и нажмите Настроить. Например, слова могут быть такие:

Hello words:
Привет
Доброго времени суток
Добрый день
Доброе утро
Добрый вечер
Доброй ночи
День добрый
Утро доброе
Вечер добрый
вы писали
ты писал
здравствуй
здраствуй
hello
you wrote
wrote:


Hello regexps:
\d:\d\d:\d\d
письмо.*тем(а|у|ой)
hi[^a-z0-9]


Goodbye words:
-----Original Message-----
----- Original Message -----
-----Исходное сообщение-----
----- Исходное сообщение -----
С уважением
------------------------ Yahoo! Groups Sponsor --------------------~--

Пример

%SmartQuotes('2')

%StrLen

Параметры

%StrLen(текст)

Описание

Возвращает длину текста. Макрос пригоден для однострочного текста, потому что перевод строки считается как 2 символа.

Пример

%StrLen("проверка")

%StrReplace

Параметры

%StrReplace(текст, найти, заменить на)

Описание

Заменяет в тексте все найденные строки на строку-заменитель (поиск регистронезависимый).

Пример

%StrReplace("до ре ми ре фа","ре","ля")

%StrTr

Параметры

%StrTr(текст, искомый алфавит, новый алфавит)

Описание

Это младший брат %StrReplace. Используйте его только в том случае, если нужно заменять одиночные символы на одиночные символы!

Макрос заменяет все символы, вошедшие в искомый алфавит, на соответсвующие им символы из нового алфавита. Длины алфавитов должны быть одинаковы. Замена регистрозависима.

Пример

%StrTr("Лужа","ЖУжу","СЕсе")

%TextBar

Параметры

%TextBar(префикс, строка, суффикс, длина)

Описание

Формирует полосу заданной длины следующим образом: берётся указанная строка и добивается префиксом и суфиксом до нужной длины.

Если длина исходной строки превышает заданную длину полосы, строка не урезается.

Пример

%TextBar("=-","[ текст ]","-=","70")

%Trim

Параметры

%Trim(текст)

Описание

Удаляет лишние пробелы и служебные символы из начала и конца текста.

Пример

|%Trim(" вот так
")|

Вычисления

Макросы для работы с цифрами. Полезно использовать со встроенным в The Bat! макросом %Calc.

%CounterToDate

Параметры

%CounterToDate(формат, число дней)

Описание

Макрос обратный %DateToCounter. Преобразовывает Число дней, прошедших от 1 января 1900 в дату. Формат даты может содержать yyyy, yy, mmm, mm, m, dd, d, hh, h, nn, n, ss, s.

Макрос эксперементальный, его правильная работа не гарантируется.

Пример

%CounterToDate("nn.mm.yyyy, hh:nn:ss","123456.78")

%DateToCounter

Параметры

%DateToCounter
%DateToCounter(формат, дата)

Описание

Количество дней с 1 января 1900 до указанной Даты. Формат даты может содержать yyyy, yy, mmm, mm, m, dd, d, hh, h, nn, n, ss, s. Время считается как дробная часть числа, т.е. 1 января 1900, 12:00 будет равнятся 0.5.

Макрос эксперементальный, его правильная работа не гарантируется.

Пример

%DateToCounter("yyyy-mm-nn hh:nn:ss","2004-08-01 18:56:32")

%DaysTo

Параметры

%DaysTo(дата)

Описание

Количество дней, между сегодняшним днём и указанной датой.

Формат даты зависит от локализации системы. Узнать свой формат можно в Regional Options на панели управления в поле "Short Date".

Пример

%DaysTo("23.02.04")
%DaysTo("23/02/04")

%Random

Параметры

%Random(минимум, максимум)

Описание

Случайное целое число в указанных пределах включительно.

Пример

%Random("5","10")

Циклы

Макросы для многократного повторения шаблонов.

%Eval

Параметры

%Eval(выражение)

Описание

Пропускает полученное выражение через шаблонопроцессор Бата ещё раз.

Пример

%Eval("%Subject")

В этом случае первым выполняется макрос %Subject. Вместо него подставляется значение поля "тема" текущего письма. Затем управление передаётся макросу %Eval, который получает на вход тему сообщения и по сути в ней уже ничего не меняет.

%Eval("%%Subject")

В этом случае обработку сначала проходит %%Subject. Вместо него возвращается строка %Subject. Потом управление передаётся макросу %Eval, который полученную строку %Subject пропускает через шаблонопроцессор ещё раз и получает в итоге тему сообщения.

Разница между этими двумя примерами в порядке обработки макросов. Сам по себе макрос %Eval ничего полезного не делает, но все макросы для организации циклов (%While, %For, и т.д.) основаны на нём, так что важно понять идею, заложенную в "%%".

%For

Параметры

%For(минимальное, максимальное, имя переменной, выражение)

Описание

Выполняет выражение (см. %Eval) несколько раз подряд, каждый раз предварительно присваивая указанной переменной целочисленные значения в указанном интервале.

Пример

%For("1","5","Iter","%%_Iter ")

%ForDown

Параметры

%ForDown(максимальное, минимальное, имя переменной, выражение)

Описание

Макрос аналогичен %For. Отличие в том, что отсчет идёт в обратном направлении.

Пример

%For("5","1","Cnt","%%_Cnt ")

%While

Параметры

%While(имя переменной, терминальное значение, выражение)

Описание

Выполняет выражение (см. %Eval) несколько раз до тех пор, пока указанная переменная не приобретёт терминальное значение.

Осторожно!!! Не делайте бесконечные циклы!

Пример

%Until

Параметры

%Until(имя переменной, терминальное значение, выражение)

Описание

То же что и %While, но проверка на терминальное значение производится после обработки выражения.

Осторожно!!! Не делайте бесконечные циклы!

Пример

%Until("Xyz", "wwww","%%_Xyz='w%%_Xyz'%%_Xyz ")

Списки значений

Макросы для работы со списками перечисленных значений.

%GetValueN

Параметры

%GetValueN(n, список)
%GetValueN(n, список, разделитель)

Описание

Макрос возвращает n-е значение из списка. Список это строка с перечисленными значениями. Разделитель сообщения по умолчанию "," (запятая), но его можно изменить.

Отдельные значения, если они содержат внутри себя разделитель, можно заключать в кавычки " и ?.

Внутри значений можно использовать escape-последовательности. "\n" и "\t" воспринимаются как перевод строки и табуляция соответственно.

Обратите внимание на то что пример строкой ниже работать не будет. Потому что символ " используется как ограничитель макроса %To, и его нельзя использовать внутри. Это ограничение, накладываемое The Bat!?ом.

%To="%GetValueN(?2?,?"test, a","test2, b","test3, c"?)"

Чтоб избежать этого можно использовать быстрые шаблоны или внешние текстовые файлы:

Макрос:
%To="%GetValueN(?2?,?%QInclude=?sample??)"

Быстрый шаблон "sample":
"test, a","test2, b","test3, c"

Пример

%GetValueN("3","раз, 'раз\nдва', 'третий \' третий \' третий'")

%GetValueKey

Параметры

%GetValueKey(ключ, список)
%GetValueKey(ключ, список, разделитель ключа и значения)
%GetValueKey(ключ, список, разделитель ключа и значения, разделитель строк)

Описание

Макрос находит в списке ключ и возвращает значение этого ключа. Если ключ не найден, возвращается пустая строка.

По умолчанию ключ и значение разделяются запятой ",", но можно установить и другой разделитель. Разделитель строк также можно поменять, но как правило "\n" (перевод строки) должен подойти в большинстве случаем.

Пример

%GetValueKey("яблоко","
помидор => красный
яблоко => зелёный
лимон => жёлтый
","=>")


%GetValueRegExpKey

Параметры

%GetValueRegExpKey(ключ, список)
%GetValueRegExpKey(ключ, список, разделитель ключа и значения)
%GetValueRegExpKey(ключ, список, разделитель ключа и значения, разделитель строк)
%GetValueRegExpKey

Описание

Макрос аналогичен %GetValueKey с тем лишь исключением, что ключами являются регулярные выражения.

Пример

%GetValueRegExpKey("andrew@microsoft.com","
'@microsoft\.' = вы работаете на MS
'@.+\.microsoft\.' = вы работаете на департамент MS
'@barin\.com\.ua\Z' = вы работаете на меня :)
","=")

Windows

Макросы для работы с операционной системой.

%KeybLayout

Параметры

%KeybLayout(раскладка клавиатуры)

Описание

Переключает текущую раскладку клавиатуры. Можно использовать 8-циферный код языка (например, 00000409 это английский), или один из следующих идентификаторов: BE, BG, CS, DA, DE, EL, EN, ET, IT, LT, LV, NL, NO, PL, PT, RO, RU, SL, UK.

Пример

%KeybLayout("RU")

%RegRead

Параметры

%RegRead(путь к значению)
%RegRead(путь к значению, результат по умолчанию)

Описание

Возвращает строковое (STRING) или целочисленное (DWORD) значение из указанного пути в реестре.

Если значения не существует, возращается значение по умолчанию.

Пример

%RegRead("HKEY_CURRENT_USER\Software\%-
\Microsoft\Internet Explorer\Main\Start Page")

%RegWrite

Параметры

%RegWrite(путь к значению, значение)
%RegWrite(путь к значению, значение, тип записи)

Описание

Записывает значение по указанному пути в реестре.

Третий параметр указывает тип записи: "STR" для STRING, "INT" для DWORD. По умолчанию STR.

Пример

%RegWrite("HKEY_CURRENT_USERABC","Значение","STR")

%Run

Параметры

%Run(командная строка)
%Run(командная строка, состояние окна)
%Run(командная строка, состояние окна, время ожидания)

Описание

Выполняет командную строку.

Второй параметр указывает состояние запущеного приложения: HIDE, ACTIVE, ACTIVEMAX, ACTIVEMIN, NOTACTIVE, NOTACTIVEMIN. По умолчанию ACTIVE.

Если указан третий параметр, обработка шаблона приостанавливается до тех пор, пока запущенное приложение не завершит свою работу, но не больше чем указанное число миллисекунд.

Пример

%Run("notepad.exe c:\boot.ini","ACTIVEMAX")

Winamp

Макросы для наблюдения за Winamp'ом.

%WinampStatus

Параметры

%WinampStatus

Описание

Возвращает состояние WinAmp'а — одну из четырех строк: OFF, STOPPED, PAUSED, PLAY.

Пример

%WinAmpStatus

%WinampTitle

Параметры

%WinampTitle

Описание

Название композиции, загруженной в WinAmp 2.xx/5.xx. Прокрутка названия композиции в заголовке окна должна быть отключена.

Пример

%WinAmpTitle

Другие

Макросы, не относящиеся к другим разделам :)

%CountAttachments

Параметры

%CountAttachments

Описание

Количество приложенных к письму файлов.

Пример

%CountAttachments

%MyMacrosVersion

Параметры

%MyMacrosVersion

Описание

Возвращает версию MyMacros в виде вроде "MyMacros N.xx".

Пример

%MyMacrosVersion

%OCountAttachments

Параметры

%OCountAttachments

Описание

Количество приложенных к исходному письму файлов.

Пример

%OCountAttachments

%SubjIfNone

Параметры

%SubjIfNone(новая тема)

Описание

Установить в поле "Тема:" новую тему, если это поле ещё пустое.

Пример

%SubjIfNone="Про MyMacros"

%ToIfNone

Параметры

%ToIfNone(адрес получателя)

Описание

Установить в поле "Кому:" адрес получателя, если список получателей сообщения ещё пуст.

Пример

%ToIfNone="list@host.com"



* — свежак