Расширенный режим (синтаксис)

Расширенный режим - основной и самый мощный синтаксический режим работы nnCron. В расширенном режиме у пользователя появляется возможность создавать именованные "Задачи" (Tasks), каждая из которых запускается в указанное пользователем время и позволяет тонко настраивать и сами выполняемые действия и условия, при соблюдении которых они выполняются.

Описание каждой задачи начинается с такой синтаксической конструкции:

#( <имя_задачи>

Встретив эту последовательность, парсер кронтаба сразу переключается в расширенный режим.

Другая конструкция:

)#

означает конец описания задачи и переключает парсер кронтаба обратно в классический режим. Сделано это для того, чтобы классический и расширенный режимы могли легко "уживаться" рядом друг с другом в одном кронтабе. Логика проста: все в кронтабе, что находится внутри конструкции

#( task_name
 
)#

- это расширенный режим, а все, что находится вне этой конструкции - классический. "Простенько и со вкусом". :)

Пример:

# запускаем bat-файл каждый час
0 * * * * * cmd /c "c:\xxx\my.bat"
# это классический режим
 
#( my_task
\ а это уже расширенный режим
\ выводим сообщение раз в тридцать минут
Time: */30 * * * * *
Action:
    TMSG: "Прошло тридцать минут" 3
)#

Расширенный режим допускает наличие любого количества пустых строк - они не учитываются парсером. Лидирующие пробелы и знаки табуляции тоже игнорируются. Важное замечание: синтаксис расширенного режима требует, чтобы все ключевые слова nnCron были разделены хотя бы одним пробелом, знаком табуляции или переводом строки.

Расширенный режим позволяет "разбивать" длинные строки на любое количество коротких с помощью символа '\' (обратный слеш) в месте разрыва. При разборе задачи парсер сам "склеит" несколько коротких строк в одну длинную. Например, две следующие задачи совершенно идентичны с точки зрения парсера:

#( test_task
\ это комментарий
Action:
    \ парсер воспримет следующие короткие строки как одну длинную
    START-APP: c:\very\very\long\\
path\to\the\file.exe \
-run my-script -exit \
-nowarning
)#

#( test_task1
\ это комментарий
Action:
    \ а это - длинная строка:
    START-APP: c:\very\very\long\path\to\the\file.exe -run my-script -exit -nowarning
)#

В любом месте внутри каждой задачи можно использовать специальный знак комментария до конца строки, который принят в языке Форт: \ (обратный слэш). Не забывайте ставить пробел и после знака комментария, поскольку знак комментария тоже является ключевым словом nnCron.

Символ комментария классического режима (#) не действует в расширенном режиме!

Пример:

#( first_task
\ это моя первая самостоятельная задача
NoLog                     \ опция
Time: */15 * * * 1-5 *    \ спецификатор времени
Action:                   \ действие
    PLAY-SOUND: c:\winnt\media\chimes.wav
)#

Теперь обсудим главное достоинство расширенного режима - "задачу" (Task).