Строковые макросы
Разные макросы для работы со строками.
%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"
* — свежак