WatchFile - как отловить *.gif и поместить имя в clipboard?

Обсуждение программ nnCron и nnCron LITE

WatchFile - как отловить *.gif и поместить имя в clipboard?

Postby ivs » Mon, 27 Mar 2006, 02:05

СтоИт следующая задача: при появлении любого файла *.gif в определенном каталоге поместить в буфер обмена строку включающюю какой-то текст и имя этого файла.

Пример: при появлении c:\one.gif поместить в буфер строку "exist - one.gif".

У меня такие проблемы:
1. не знаю, как передать имя файла из WatchFile дале в скрипт в action.
2. WatchFile с маской будет работать некорректно, если в каталоге много gif-файлов;

как грамотно решить такую задачу?

спасибо!
ivs
 
Posts: 2
Joined: Mon, 27 Mar 2006, 01:49

Postby Valery_Kondakoff » Mon, 27 Mar 2006, 12:25

подручными средствами. следить за каталогом с помощью WatchDir. после срабатывания, с помощью плагина files_pick.spf ( http://www.nncron.ru/download/plugins/files_pick.spf ) выбирать самый "свежий" файл и сравнивать его дату с сохраненной в переменную. если файл новее - класть стрку с именем файла в буфер.
CU
VK
User avatar
Valery_Kondakoff
Site Admin
 
Posts: 769
Joined: Thu, 01 Jul 2004, 20:49
Location: Moscow, Russia

Postby Nicholas_Nemtsev » Mon, 27 Mar 2006, 15:27

Еще можно использовать FILE-CHANGE: из time.spf
Nicholas Nemtsev
User avatar
Nicholas_Nemtsev
Site Admin
 
Posts: 857
Joined: Thu, 01 Jul 2004, 22:25
Location: Псков

Postby ivs » Tue, 28 Mar 2006, 00:10

Valery_Kondakoff wrote:подручными средствами. следить за каталогом с помощью WatchDir. после срабатывания, с помощью плагина files_pick.spf ( http://www.nncron.ru/download/plugins/files_pick.spf ) выбирать самый "свежий" файл и сравнивать его дату с сохраненной в переменную. если файл новее - класть стрку с именем файла в буфер.


Эх, если бы я так знал nncron - я на нем только хибернейт по таймеру делал. Не поделитесь реальным куском кода? (: Буду безмерно благодарен...
ivs
 
Posts: 2
Joined: Mon, 27 Mar 2006, 01:49

Postby SeMa » Wed, 29 Mar 2006, 15:35

ivs wrote:
Valery_Kondakoff wrote:подручными средствами. следить за каталогом с помощью WatchDir. после срабатывания, с помощью плагина files_pick.spf ( http://www.nncron.ru/download/plugins/files_pick.spf ) выбирать самый "свежий" файл и сравнивать его дату с сохраненной в переменную. если файл новее - класть стрку с именем файла в буфер.


Эх, если бы я так знал nncron - я на нем только хибернейт по таймеру делал. Не поделитесь реальным куском кода? (: Буду безмерно благодарен...

Если использовать имя нового файла с полным путем, то можно так (по предложению Valery_Kondakoff с использованием плагина files_pick.spf):
Code: Select all
#( new-gif-file-in-folder
\ NoActive
2VARIABLE last-file-time               \ храним время создания самого свежего файла
Action:
RECENT-FILE-TIME: "c:\*.gif"           \ получаем имя самого свежего файла
FILE-TIME last-file-time 2@ FTIME- 0>  \ и сравниваем с переменной
IF                                     \ если есть файл свежее
  RECENT-FILE-TIME: "c:\*.gif"
  2DUP
  FILE-TIME last-file-time 2!          \ сохраняем его время в переменной
  CLIPBOARD!                           \ запихиваем имя в клиборд
  MSG: "%CLIPBOARD%"                   \ выводим на экран
THEN
)#

Если нужно выделить имя, то я предлагаю следующий пример, т.к. не силен в Форте и не разобрался, как использовать слова из того же плагина, чтобы взять только имя:
Code: Select all
#( test-gif-file
\ NoActive
2VARIABLE last-file-time
VARIABLE new??                         \ индикатор нового файла
Action:
new?? OFF                              \ сбрасываем индикатор
FOR-FILES: "c:\*.gif"                  \ в цикле проверяем файлы в папке
  FOUND-FULLPATH FILE-TIME last-file-time 2@ FTIME- 0>   \ сравниваем с переменной
  IF                                                     \ если есть файл свежее
     FOUND-FULLPATH FILE-TIME last-file-time 2!          \ сохраняем его время в переменной
     S" exist - %FOUND-FILENAME%" EVAL-SUBST CLIPBOARD!  \ формируем содержимое клиборда
     new?? ON                          \ устанавливаем индикатор
  THEN
;FOR-FILES
new?? @                                \ если был новый файл
IF MSG: "%CLIPBOARD%" THEN             \ выводим его имя на экран
)#
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 4 guests