Пытаюсь сделать такой шаблон, чтобы при ответе сначала было бы так: Кому: 111111 <> Копия: 222222 <>, 333333 <>, 444444 <>, 555555 <>, 777777 <>, 888888 <>
Потом бы проверялось есть ли в поле Кому адрес 444444 <>, если да, то удалялся бы. Потом проверялось бы есть ли в поле Кому адрес 666666 <>, если да, то добавлялся бы.
и в итоге: Кому: 111111 <> Копия: 222222 <>, 333333 <>, 555555 <>, 777777 <>, 888888 <>, 666666 <>
Возможно такое?? Если да, то помогите, пожалуйста, уже голову сломал.
Очень странно, у меня всë работает хорошо (версия Бата 10.3.3.2, но по моему это неважно). Если возможно, покажите Ваш шаблон, удаляя все личные данные.
Помню, что когда-то текст шаблона не надо было копировать непосредственно, но впервэ вставить его в Notepad и отсюда вставить его в Бат. Попробуйте.
Да, виновата версия программы. У меня все работает хорошо, но в версии 10.3. Макрос %ReplaceRegExp появился только от версии 9.3.4.7. Вторая ошибка возникает из первой. Есть возможность разработать более сложную схему шаблона, используя какие-то рекурентные выражения. Я подумаю как это сделать.
Обходной путь для старых версий The Bat! может быть следующий быстрый шаблон. Это может быть не так компактно, как раньше, но это работает. Пусть этот быстрый шаблон имеет идентификатор "MULT", тогда вы должны вставить его вызов в шаблон ответа с помощью макроса %QInclude(MULT).
...сделать так, чтобы не учитывалось имя "666666", а только почтовый ящик " "? Просто имя может быть написано: "666 666", "'666666'", "666-666" и т.д.
Да, я думал об этом, но пока ещë не знаю как решить такую обобщенную проблему. Надо бы рассматривать все остальные почтовые адресы также в таком общем виду. Посмотрю.
После многих попыток мне удалось модифицировать шаблон. Kажется, что теперь он будет работать корректно, независимо от формы почтовых адресов. Здесь должны были учитываться все комбинации адресов. Теперь вместо «666666» в последней строке можно ввести любой текст.
Если вам нужно обобщить адреса, вы можете использовать дополнительный шаблон, который вызывает шаблон MULT с параметрами. Параметры в этом вызове можно свободно изменять. Этот дополнительный шаблон выглядит так:
А можно ли сделать, чтобы макрос передавал значение %_CC в другой макрос?
Получается так, что макрос первый раз отрабатывает, а второй раз начинает все заново. Переменная %_CC каждый раз создается заново. Если бы она была глобальная, то макрос бы мог проверять ее. Если %_CC="", то все как обычно, если %_CC<>"", тогда не надо переносить значения полей в переменную.
К сожалению, после тщательного изучения всех возможных комбинаций адресов оказалось, что предоставленные мной шаблоны не всегда работают корректно. Это связано в том числе с тем, что в The Bat! вызов шаблона с параметрами не всегда дает ожидаемый результат. Ошибки возникают, когда мы хотим передать часть регулярного выражения в качестве параметра, на который впоследствии будем ссылаться по его номеру (то есть рассматривать его как подвыражение). В этом случае параметр необходимо передать в шаблон "дословно", т.е. вместо параметра %_1 со значением, используемого в выражении (?ism)\A(.*(,\s)+ )(.*%_1 (>)?(,\s)?)(.*) передать выражение как (?ism)\A(.*(,\s)+)(.*444@mail\.ru(>)?(,\s)?)(.*).
Поэтому я изменил вызывающий шаблон под названием MUL, который теперь выглядит так:
Первые четыре строки этого шаблона подготавливают основные параметры для передачи. Затем переменные %_RE1, %_RE2, %_RE3 и %_RE4 получают свои значения в виде литеральных регулярных выражений, используемых в вызываемом шаблоне MULT. Фактическая модификация поля %CC происходит в этом шаблоне. Обратите внимание, что точка (.), используемая буквально в регулярных выражениях, должна быть записана как (\.). Поэтому при вызове шаблона используется адрес электронной почты «400@mail\.ru», если он будет использоваться в регулярном выражении.
Что касается передачи значения переменной %_CC, то в этом нет необходимости. Вместо этого используется макрос %CC, который после первого вызова шаблона MULT может быть использован для следующего вызова и затем будет снова изменен. А вот и шаблон MULT: