Цитата |
---|
Boris T написал:
[...]
2. Сохранение отправленного файла в архивную папку - не могу понять как, отсутствует механизм или настройка. Подскажите пжл есть ли? Поясню, файл который отправляется, обновляется коллегами раз в сутки, имя файла всегда одно и то же. Архива данного файла нет, за-то он есть в отправленных письмах. Идея заключается в том чтобы Мышь самостоятельно сохранял отправленный файл в архив, желательно бы чтобы переименовывал или добавлял префикс, например текущая дата. |
Простите что так поздно отвечаю, но я только недавно прочитал это сообщение и думаю, что решение проблемы может быть полезно многим пользователям программы The Bat!.
Многие действия с файлами, которые невозможно выполнить в The Bat!, можно выполнить с помощью внешней программы. Наиболее удобной программой для таких целей является
Windows PowerShell. Скрипты PowerShell представляют собой простые текстовые файлы (с расширением имени .PS1), которые необходимо сохранить в каком-либо каталоге на жестком диске. Затем вы можете запускать команды из этих скриптов, вызывая PowerShell в одном из двух мест в The Bat!:
1.
В сортировщике - там доступно действие "
Выполнить внешнее действие"
2.
В планировщике - там доступно действие "
Запустить программу" для события.
Надо отметить, что The Bat! не позволяет по-другому вызывать внешних программ.
Вызов PowerShell в The Bat! в указанных выше местах делается через командную строку, которая обычно выглядит так:
Код |
---|
C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& '<путь_к_скрипт-файлу>\<название_скрипт-файла>'" |
Иногда можно использовать более простой вызов, но это надо проверять:
Код |
---|
powershell.exe -Command "& '<путь_к_скрипт-файлу>\<название_скрипт-файла>'" |
Вы можете решить свою проблему с отправкой прикреплённых к письму файлов и сохранением их на диск с измененным именем с помощью фильтра отправленных писем. Вы знаете адресата (тоже и тему письма) и это надо использовать как условие фильтра. Фильтр содержит два действия:
1.
Извлечь прикрепленные файлы - здесь надо определить путь и название каталога для сохранения архивных файлов (например "
D:\Архив")
2.
Запустить внешнее действие - пусть скрипт сохранен в файлу "
D:\Скрипты\Переименование.PS1", тогда команда будет следующая:
Код |
---|
powershell.exe -Command "& 'D:\Скрипты\Переименование.PS1'" |
Ну, а как же это действует? The Bat! отправляет письмо, фильтр сохраняет прикреплённый файл и потом переименует его, добавляя текущую дату как префикс. Скрипт "
Переименование.PS1" вот такой:
Код |
---|
$TodayDate = Get-Date -F "yyyyMMdd"
$FileName = (Get-Item <путь_к_архиву>\<название_прикрепллённого_файла>).Name
$NewName = $TodayDate + "_" + $FileName
Rename-Item -Path "<путь_к_архиву>\$FileName" -NewName $NewName |
Я проверил действие такого фильтра и могу сказать, что всё работает правильно. Например, если к письму прикреплённый файл "Показания.xlsx" то в каталоге "D:\Архив" появляется файл "20220131_Показания.xlsx" (конечно, вместо "20220131" будет всегда текущая дата). Проблема может возникнуть, когда вам придется прикреплять различные файлы. В таком случае вы должны сделать несколько фильтров и использовать в них названия файлов как критерии, а каждый фильтр должен запускать собственный скрипт.