Lotus Script + (vbscript или Bat-файл)

  • Автор темы Serg84
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Serg84

#1
Всем привет.

Пишу в основном vbscript и bat-файлы, для решения необходимых задач. Написал vbscript для поиска файлов в папке, дата создания которых меньше определенной даты (в качестве параметра при запуске задавалось число дней, которое нужно вычесть из текущей даты и сравнить полученную дату с датой создания (редактирования) файла). В зависимости от результата осуществлялась отправка сообщения через SMTP.

sub sender()
{...}
end sub

set objNamedArgs=Wscript.Arguments.Named
killdate=date() - objNamedArgs.item("days")

set FSO = WScript.CreateObject("Scripting.FileSystemObject")
set strFile = FSO.GetFile("путь к файлу")
dtelastmodified = strFile.datelastmodified

if dtelastmodified < KillDate then
sender
end if

Пример запуска: test.vbs /days:2


Сегодня попросили реализовать этот же скрипт в Lotus`e. Т.к. в программировании на Лотусе новичок, то за первый день знакомства с языком @-формул понял лишь пока как просто отправить сообщение. Дальнейшее пока просто не представляю как реализовть. Возникло несколько вопросов по реализации задачи:

1) Можно ли средствами самого Лотуса (на языке @-формул) реализовать данную задачу?
То есть: 1) получить дату создания файла, которые лежит на диске
2) из текущей даты вычесть определенное количество дней (пусть количество дней будет жестко прописано в скрипте, т.к. непонятно как передать его в качестве параметра)
3) сравнить даты - если 2) > 1) - то отсылаем сообщение что дата создания файла старее чем нужно нам. Если же 2) < 1) - ничего не происходит.

2) Может быть можно в Лотусовском скрипте запускать мой vbscript, а потом по результату его выполнения как то передать управление агенту на отсылку сообщения (если нужно)?
То есть из LS как-нибудь запускаем vbs, и в результате проверки дат в его теле происходит передача управления агенту, который отсылает письмо:

set FSO = WScript.CreateObject("Scripting.FileSystemObject")
set strFile = FSO.GetFile("путь к файлу")
dtelastmodified = strFile.datelastmodified

if dtelastmodified < KillDate then
ПЕРЕДАЧА УПРАВЛЕНИЯ АГЕНТУ
end if

3) Третий вариант, который крутится голове, не знаю как его реализовать, если вообще можно)))

Если имя файла (допустим он в анализируемой папке один) представлено ввиде даты, то из лотусовского скрипта можно вызвать запуск bat-файла, который бы считывал имя файла и преобразовывал его в дату, а дальше уже с помощью @-формул сравнивать даты и по результатам сравнения отправлять письмо или ничего не делать.


Заранее большое спасибо.
 
L

LIGHT

#2
Можно, лотус замечательно работает с Wscript http://codeby.net/forum/threads/22603.html
А там как заходите, запуск внешней программы (в т.ч. bat, cmd, vbs) тоже работает в лотусе смотрите в хелпе Execute
Так же можно через WScript.shell http://codeby.net/forum/threads/19423.html

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

morpheus

скриптописец
07.08.2006
3 915
1
#3
1 - не уверен что можно чистым LS без "примемей"
2 - можно реализовать
3 - если имя будет в формате даты тогда зачем чтото ещё нужно? лотус может собрать все файлы в заданной директории

Код:
' List the contents of the c:\ directory, one entry per line.
Dim pathName As String, fileName As String
pathName$ = "c:\*.*"
fileName$ = Dir$(pathName$, 0)
Do While fileName$ <> ""
Print fileName$
fileName$ = Dir$()
Loop
fileName - и будет содержать имя файла. Потом преобразуем в дату ( с проверкой ) и дальше сфайлом делаем все что необходимо
 
S

Serg84

#4
Спасибо большое за отзывы, действительно в Lotus работает WScript, в обработчике условия просто вызвал процедуру отправки сообщения и все заработало.
 
Статус
Закрыто для дальнейших ответов.