Страницы: 1
RSS
Установка флага по условию
 
Необходимо сделать вот что:
1) фильтр сохраняет текст сообщения в некий каталог
2) сохраняются вложения туда же
3) выполняется внешнее действие, которое обрабатывает данные в этих файлах
4) по результатам обработки (например по коду возврата от п.3 или по какому-то другому признаку) хотелось бы пометить исходное сообщение флажком. То есть, если внешняя прожка сочла файлы вложений некорректными, то необходимо отметить сообщение флажком, чтобы юзер обратил на него внимание.
-
Как сие можно реализовать?
 
В целях эксперимента изначально был опробован другой подход:
1) сообщение изначально принимается в Inbox(Входящие)
2) сохраняется текст и вложения в некий каталог
3) выполняется внешнее действие
4) в случае если файлы некорректны, то предполагалось вызвать ошибку (например деление на 0) и тогда теоретически обработка фильтром должна была остановиться. Если файлы корректны, то внешнее действие завершается нормально, переход на п.5
5) перемещение в папку "Макеты"
-
Таким образом в папке "Входящие" пользователь мог видеть сообщения, не прошедшие обработку внешней программой.
Однако обнаружилось, что п.5 выполняется независимо от того, завершилась ли программа в п.4 штатно или "вылетела" с ошибкой. (галочка "Подождать завершения" установлена)
Отсюда родился вопрос: все действия в фильтре происходят параллельно?
-
версия The Bat 3.0.1.33
 
Просто нет гарантированного метода определения факта завершения программы с ошибкой или без.
Как правило ошибочность обрабатывается в некоторых программах (консольных) посредством кода возврата ERRORLEVEL.
Но даже такой проверки напрямую не проводится в TheBat.  думаю что действия всё-таки выполняются последовательно.

Ваша программа возвращает что-то вроде ERRORLEVEL? Она консольная? имеет консольный вывод?

Возможно, можно попросить разработчиков как-то встроить обработку этого момента. Может быть это насущная фича.

Кстати есть достаточно интересный макроплагин Shell. Возможно получится его привернуть. Он умеет обрабатывать коды возврата. Однако он работает в шаблонах и его трудновато привернуть.
 
Цитата
Ваша программа возвращает что-то вроде ERRORLEVEL? Она консольная? имеет консольный вывод?
Программа написана на VB Script (WSH) и возвращает ERRORLEVEL c помощью метода
Код
WScript.Quit <errorlevel>
. Запускается через сервер сценариев wscript.exe, то есть без консоли, но возможно выполнить её и через консоль (cscript.exe). В процессе работы в консоль ничего не выводится, а сообщения пользователю выдаются через msgbox.

Цитата
есть достаточно интересный макроплагин Shell
тоже голову ломал над ним, но пока эврика меня не осенила :(

Насчет фичи думаю идея интересная, на будущее можно разработчикам рекомендовать.

Если задуматься о рекомендациях, тогда есть ещё вот какая тема.
Из сохраненного текста сообщения с заголовком можно выделить Message-ID, и тогда внешняя программа могла бы сама вызвать thebat.exe c передачей ему идентификатора в качестве параметра, а следующим параметром передать желаемые атрибуты (флажок, парковка и т.п.), а может быть даже и желаемые действия... тут фантазия безгранична ;)

А пока дочитал до API плагинов, может быть свой написать... ;)
Страницы: 1