динамическое слово

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

динамическое слово

Postby SeMa » Mon, 10 Feb 2014, 18:15

Есть некая структура папок, данные в которой зависят от определённых условий.
Например, дата (номер месяца).
В задаче определено слово, формирующее путь по этому условию.
Code: Select all
...
AsLoggedUser
: DATAdir "s \\10.10.25.33\%YYYY%\%MM%\" ;
WatchDir: "%DATAdir%"
WATCH-CHANGE-LAST-WRITE
Action:
...

Слово формируется при перечитывании кронтаба. И его значение остаётся статическим. При изменении месяца задача перестаёт работать.
Как сделать "обновляемое" слово без перечитывания кронтаба/перезагрузки крона?
ПК работает круглосуточно в "необслуживаемом" режиме.
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Re: динамическое слово

Postby VoidVolker » Mon, 10 Feb 2014, 21:57

SeMa wrote:Слово формируется при перечитывании кронтаба. И его значение остаётся статическим. При изменении месяца задача перестаёт работать.

Нет, данная строка не статическая. Строка генерируется динамически во временном буфере во время вызова слова. Для тех, кто не в курсе: речь идет о плагине strings.spf.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: динамическое слово

Postby AlikasS » Thu, 13 Feb 2014, 01:54

VoidVolker wrote:
SeMa wrote:Слово формируется при перечитывании кронтаба. И его значение остаётся статическим. При изменении месяца задача перестаёт работать.

Нет, данная строка не статическая. Строка генерируется динамически во временном буфере во время вызова слова. Для тех, кто не в курсе: речь идет о плагине string.spf.

ведь WatchDir: при компиляции задачи вычисляет %DATAdir% и уже в остальные дни следит за неизменной папкой, не?

можно поменять логику и сделать аналог WatchDir: "%DATAdir%" после Action:
через FOR-FILES: "path\mask" <...> ;FOR-FILES и FILE-WRITE-DATE: "path"
или самое простое, в первый день месяца перезапускать крон )), но это по твоим условиям не надо
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: динамическое слово

Postby VoidVolker » Thu, 13 Feb 2014, 06:42

AlikasS wrote:ведь WatchDir: при компиляции задачи вычисляет %DATAdir% и уже в остальные дни следит за неизменной папкой, не?

Судя по дизасму, все Watch* слова запоминают именно строку, а в процессе наблюдения делают ей EVAL-SUBST. Но лучше бы конечно в исходники заглянуть.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: динамическое слово

Postby SeMa » Wed, 19 Feb 2014, 18:14

Сделал эксперимент.
Создал папки с именами от '0' до '59'.
Code: Select all
#( task_20140219-160152
SingleInstance
:  DATAdir "s D:\%mm%"
WatchDir: "%DATAdir%"
WATCH-CHANGE-LAST-WRITE
Action:
" New file in %DATAdir%" 3 THINT
)#
Задача срабатывает только при для папки с именем минуты на момент перечитывая кронтаба.
Решение:
AlikasS wrote:или самое простое, в первый день месяца перезапускать крон
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Re: динамическое слово

Postby VoidVolker » Thu, 20 Feb 2014, 09:59

Таки проверил логику кода: строка хоть и сохраняется, но вот EVAL-SUBST на самом деле делается ей только один раз - при перечитывании кронтаба, т.е. при установке хука на доступ к каталогу. Так что да, единственное решение на данный момент - это перечитывание кронтаба.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 1 guest