Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » nnCron-Планировщик с поддержкой скриптового языка

Модерирует : gyra, Maz

Widok (29-01-2008 15:38): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

   

8AleX8



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nnCron
 
nnCron - это компактный, но мощный планировщик и менеджер автоматизации с собственным скриптовым языком, основанным на синтаксисе языка программирования Форт. Помимо традиционной для планировщика способности запускать в указанное время программы, "напоминалки" и открывать документы ..
 
nnCron способен отслеживать файлы, флаги, окна, процессы, движения мыши, время простоя компьютера, клавиатурные шорткаты, выход в онлайн/оффлайн, появление диска в драйве, наличие хоста в сети (пинг), изменение удаленного ресурса по http-протоколу, количество свободного места на диске, загруженность оперативной памяти и многое другое...
 
nnCron понимает cron-формат (Unix) и управляется с помощью текстовых кронтаб-файлов. Для тех, кто любит работать с GUI есть графическая оболочка из которой можно удалять/добавлять/редактировать и запускать задачи, устанавливать напоминалки, менять настройки программы.  
 
nnCron позволяет использовать в задачах VBScript/JScript, регулярные выражения и расширяется за счет плагинов. Он может быть запущен в качестве службы (сервиса) или как обычное приложение. Обладает средствами удаленного администрирования. Подробнее прочитать о возможностях nnCron вы можете в online-документации.
 
nnCron бесплатен для граждан стран бывшего СССР при условии частного и некоммерческого использования.


история изменений - http://www.nncron.ru/forums/viewforum.php?f=11
форум - http://www.nncron.ru/forums/
 
архив конференции поддержки: » fido7.ru.nncron
 
скачать: http://www.nncron.ru/download_ru.shtml - программу, документацию, плагины, скрипты
 
последняя версия:  
 
v.1.91 (build 1083) - последний релиз от 21 марта 2006 (+ основные плагины и документация на английском языке)  
 
документация:  
 
help_ru.zip  (обновляется регулярно) документация nnCron (на русском языке)
faq_ru.zip nnCron FAQ (на русском языке)  
spf_help.zip (130k  20 Nov 2002)  описание основных слов SP-Forth (на русском языке)  
sf.chm (1.5M  03 Feb 2003)  книга Leo Brodie "Начальный курс программирования на языке Форт" (на русском языке)  
 
полезные ссылки:
* » nnBackup - крошечная (250k) консольная утилита, предназначенная для резервного копирования файлов, синхронизации содержимого каталогов, создания и обработки файл-листов.  
* » Cтатья Валерия Кондакова про возможности nnCron  
* » Канал "nnCron releases" для » WatzNew by 8AleX8
* » Файл расцветки синтаксиса исходников языка Форт и кронтабов nnCron для плагина Colorer (Far Manager)
* » Редактор мелодий для beeper'a под nnCron
Если не работает новая, правильно написанная задача, то попробуйте добавить в опции задачи слово AsLoggedUser (галочка в свойствах новой задачи "Как пользователь, выполнивший login") и, возможно, LoadProfile (галочка "Загрузить профиль").
 

Полезные самодельные задачи для сабжа
 

Всего записей: 1813 | Зарегистр. 11-12-2001 | Отправлено: 23:26 27-04-2002 | Исправлено: lucky_Luk, 18:16 22-09-2007
ALEF



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Решение от Немцева (на мой взгляд, весьма элегантное):
1. Записать скрипт в отдельный файл (так удобнее) send_msg.pat
2. В том месте, где нужно вставить адрес пишем %MY-SEND-TO ASCIIZ>%
3. Описать слово MY-SEND и переменную MY-SEND-TO
Пример использования:

Код:
#( test-send-mail
NoActive
CREATE MY-SEND-TO 64 ALLOT
: MY-SEND ( a u -- )
     MY-SEND-TO ZPLACE
     S" send_msg.pat" FILE EVAL-SUBST S" send_msg.vbs" FWRITE
     START-APPW: cscript send_msg.vbs
;
Action:
     S" scipio.nn@gmail.com" MY-SEND
)#  


----------
Аникей - не очень старое русское имя.

Всего записей: 1002 | Зарегистр. 03-11-2003 | Отправлено: 18:54 07-08-2006 | Исправлено: ALEF, 18:56 07-08-2006
Stygis

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ALEF
Приведи в отдельном посте всю задачу для будущих поколений
ЗЫ. Убери из задачи адрес

Всего записей: 2497 | Зарегистр. 24-09-2005 | Отправлено: 19:13 07-08-2006
lucky_Luk

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666

Цитата:
что у тебя считается "не двигать мышку"? Просто даже если ее не двигать, то она может сдвинуться на несколько пикселей (если мышь хреновая).

Мышь нормальная, не дергается так что можно попробовать без разброса. Проблема с возвратом на текущие координаты - пробовал для получения текущих координат юзать слово MOUSE-POS, но не пойму как 2 числа положить в массив, а потом их достать и передать слову MOUSE-MOVE:, к тому же при извлечении из массива они будут наоборот (т.е. сначала координата Y, а потом X).

Всего записей: 7100 | Зарегистр. 29-11-2004 | Отправлено: 21:00 07-08-2006
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lucky_Luk

Цитата:
но не пойму как 2 числа положить в массив, а потом их достать и передать слову MOUSE-MOVE:

1. Есть переменные двойной длины 2VARIABLE (см.справку)
2. Вместо MOUSE-MOVE: <x> <y>  используй <x> <y> MOUSE-MOVE
 
Т.е. задача что-то типа этого

Код:
#( TEST-MOUSE-MOVE
WatchHotKey: "^+@d"  
2VARIABLE startmousepos \ Переменная для хранения начальной позиции мыши
2VARIABLE targetmousepos \ Переменная для хранения целевой позиции мыши
Action:
    0 1024 targetmousepos 2!  \ Координаты x и y цели
    MOUSE-POS startmousepos 2!  \ Запоминаем начальную позицию мыши
    targetmousepos 2@ MOUSE-MOVE  \ Передвигаем в нужную позицию
    2000 PAUSE
    targetmousepos 2@ MOUSE-POS D= \ Сравниваем нынешнюю позицию и позицию цели
    IF
        startmousepos 2@ MOUSE-MOVE \ Переместить на начальное положение
    THEN
)#



----------
MSI PRO B650-P WIFI / Ryzen 5 7600X / RAM 32Gib / 4 HDD = 10Tib + 1 NVME 2Tib / Radeon RX 560 2Gib / Win 10 x64 // POB, PVD

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 21:51 07-08-2006
lucky_Luk

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666

Цитата:
Т.е. задача что-то типа этого

Спасибо, все работает . Задача была нужна для отображения по команде с клавиатуры скрытой панели задач (находится сверху), повесил ее на CTRL+SHIFT (комбинация для переключения языка клавы).
Если еще кому-то нужна такая фича, то берете пример задачи от unreal666, вписываете координаты цели, например 200 0, а чтобы задача отключалась если пользователь двигает мышкой (например чтобы вызвать прогу из трея), то в конце задачи перед THEN вписываете ELSE EXIT.
 

Всего записей: 7100 | Зарегистр. 29-11-2004 | Отправлено: 22:50 07-08-2006 | Исправлено: lucky_Luk, 22:53 07-08-2006
Stygis

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тихий ужс.... 60 задач... Из которых активны 11...

Всего записей: 2497 | Зарегистр. 24-09-2005 | Отправлено: 22:51 07-08-2006
lucky_Luk

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Stygis

Цитата:
Тихий ужс.... 60 задач... Из которых активны 11...
 

Не понял ?

Всего записей: 7100 | Зарегистр. 29-11-2004 | Отправлено: 22:54 07-08-2006
Stygis

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lucky_Luk
А чего непонятного? 60 задач у меня в списке... Только 11 из них используются

Всего записей: 2497 | Зарегистр. 24-09-2005 | Отправлено: 22:56 07-08-2006 | Исправлено: Stygis, 22:56 07-08-2006
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lucky_Luk

Цитата:
чтобы задача отключалась если пользователь двигает мышкой (например чтобы вызвать прогу из трея), то в конце задачи перед THEN вписываете ELSE EXIT.

А это зачем ? Если после THEN идет сразу конец задачи, то ELSE EXIT не нужен.
 
Stygis

Цитата:
Тихий ужс.... 60 задач... Из которых активны 11...

Остальные для эксперимента что ли  Или для ручного запуска?
 
Я там тебе на форуме nncron письмо написал.

----------
MSI PRO B650-P WIFI / Ryzen 5 7600X / RAM 32Gib / 4 HDD = 10Tib + 1 NVME 2Tib / Radeon RX 560 2Gib / Win 10 x64 // POB, PVD

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 22:56 07-08-2006 | Исправлено: unreal666, 22:58 07-08-2006
Stygis

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666

Цитата:
Остальные для эксперимента что ли

Эксперимент + помощь на форумах %)

Цитата:
Я там тебе на форуме nncron письмо написал.

А я уже на мыло скинул

Всего записей: 2497 | Зарегистр. 24-09-2005 | Отправлено: 23:08 07-08-2006
lucky_Luk

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666

Цитата:
А это зачем ? Если после THEN идет сразу конец задачи, то ELSE EXIT не нужен.

Действительно не нужно, спасибо что просветил.  
Я такую конструкцию использовал в других задачах и теперь по привычке везде леплю - например есть большая задача, где-то в ней есть проверки разных условий одна после другой и при отрицательном ответе на любую проверку задача должна останавливаться. Так чтобы весь остальной кусок в IF...THEN не совать и вложенных циклов не делать я использую ELSE EXIT THEN.
 
Добавлено:
Нужна задача, которая при запуске проверяет, выполняется ли другая задача - если нет то запускает ее, а если да то завершает свою работу.

Всего записей: 7100 | Зарегистр. 29-11-2004 | Отправлено: 23:08 07-08-2006
Nicka_Grey

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Нужна помощь в написании следующего скрипта:
На локальной машине есть определенная папка (пускай будет Folder), содержащая n-ое кол-во папок в себе (пускай будет F1, F2 ... F3).
Нужно что бы:
  1.Ежедневно задача каждую подпапку из папки Folder копировала в определенно место (допустим на диск Е:\Test) в папку по текущей дате (в формате DD.MM.YYYY)
  2.Все папки на диске Е:\Test название которых (в формате DD.MM.YYYY) меньше текущей даты на 15 дней удалять.
  3.При появлении в локальной сети машины с IP xx.xx.xx.xx синхронизировать папки на дискке Е:\Test и на шаре машины с IP xx.xx.xx.xx (т.е. отсутствующие папки скопировать, лишние удалить).
 
  Первых 2 пункта воде сделал, может не самым лучшим вариантом, но работает, сейчас под рукой просто нет скрипта. А вот с 3-им пунктом как то не очень то получается. А именно, скопировать папки которых нет на машине в сети, могу, а вот удалить... Точнее не знаю как сравнить название папки (в формате DD.MM.YYYY) с текущей датой...
Плз, нужна помощь!
 
Спасибо.
 

Всего записей: 1282 | Зарегистр. 04-01-2003 | Отправлено: 12:30 08-08-2006
Stygis

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lucky_Luk

Цитата:
проверяет, выполняется ли другая задача

Вот здесь задача, которая из одной задачи останавливает выполнение другой. Насколько я понял (сейчас проверить не могу), если t1-id == 0, то задача не запущена.
 

Цитата:
запускает ее

<имя задачи> LAUNCH
 
Добавлено:
Nicka_Grey
Вот тут есть задачи с вырезанием из полного пути директории файла. Соответственно вырезаешь путь - запихиваешь его в переменную. В другую переменную кидаешь дату. Сравниваешь.

Всего записей: 2497 | Зарегистр. 24-09-2005 | Отправлено: 15:41 08-08-2006
Nicka_Grey

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Stygis
Спасибо
я как тестовый вариант и сделал с регеспами. Но после отработки задачи все время получаю "Мусор в стеке"...

Всего записей: 1282 | Зарегистр. 04-01-2003 | Отправлено: 17:01 08-08-2006
Stygis

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nicka_Grey
Значит где-то поставил что-то лишнее или наоборот, недоставил
В результате работы задачи стек не должен измениться - т.е. стек до запуска задачи и после должен быть одинаковым. А у тебя либо что-то осталось от задачи (возможно, поможет DROP), либо какое-нибудь условие (или еще что-нить) пытается взять со стека значение, которого там нет.
Приводи текст задачи (не забываем про [more]) - поглядим

Всего записей: 2497 | Зарегистр. 24-09-2005 | Отправлено: 17:25 08-08-2006
Nicka_Grey

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Stygis
Спасибо
ок
как доберусь до самой задачи - закину сюды

Всего записей: 1282 | Зарегистр. 04-01-2003 | Отправлено: 17:31 08-08-2006
lucky_Luk

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Stygis

Цитата:
Вот здесь задача, которая из одной задачи останавливает выполнение другой. Насколько я понял (сейчас проверить не могу), если t1-id == 0, то задача не запущена.

Не понял где в этой задаче задается имя второй задачи (существование которой проверяется).
Как запретить одновременную работу двух копий одной задачи?

Всего записей: 7100 | Зарегистр. 29-11-2004 | Отправлено: 22:15 08-08-2006
Stygis

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lucky_Luk

Код:
#( task1
VARIABLE t1-id
Action:
    GetCurrentThreadId t1-id !
)#
 
#( task2
WINAPI: OpenThread KERNEL32.DLL
Action:
    t1-id @ ?DUP
    IF
        0 1 OpenThread ?DUP
        IF STOP THEN
    THEN
)#

В task1 задается переменная t1-id. Т.е. если задача task1 выполняется, то t1-id будет не равно нулю. Соответственно если ты во второй задаче будешь проверять:

Код:
t1-id 0=
\ если t1-id равна нулю, то в task1 она не назначалась и, соответственно task1 не выполняется
IF \ task1 не выполняется
...
ELSE \ task1 выполняется
....
THEN

 
Кстати, в конце task1 надо бы еще добавить:

Код:
0 t1-id !

Т.е. если задача закончилась, то обнулить переменную. Иначе эта переменная будет означать, что задача выполняется или уже выполнилась. Ну и в task2 после STOP тоже полезно бы обнулить t1-id.
 
Сумбурно немного объяснил, конечно... Понятно? Или более подробно нарисовать? %)
 
Добавлено:
PS. Хы-хы... +3 задачи %)

Всего записей: 2497 | Зарегистр. 24-09-2005 | Отправлено: 22:49 08-08-2006 | Исправлено: Stygis, 22:50 08-08-2006
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Чего-то нифига не пойму. Сделал для эксперимента таку задачу.

Код:
#( Test_ClipBoard
NoActive
AsLoggedUser
LoadProfile
Action:  
    CLIPBOARD 0<>
    IF
        MSG: "%CLIPBOARD%"
    THEN
)#

При запуске показывает содержимое буфера, а потом вылазит сообщение, что в этой задаче в разделе Action в стеке мусор.
Че за фигня?
 
P.S.
даже так пробовал

Код:
#( Test_ClipBoard
NoActive
AsLoggedUser
LoadProfile
Action:  
    CLIPBOARD 0<>
    IF
        MSG: "%CLIPBOARD%"
    THEN
    BEGIN DEPTH WHILE DROP REPEAT
)#


----------
MSI PRO B650-P WIFI / Ryzen 5 7600X / RAM 32Gib / 4 HDD = 10Tib + 1 NVME 2Tib / Radeon RX 560 2Gib / Win 10 x64 // POB, PVD

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 01:23 09-08-2006
DJ makrus

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666

Цитата:
...
BEGIN DEPTH WHILE DROP REPEAT
...
а ты уверен что в начале выполнения задачи стек пустой?
у меня есть слово
Код:
: depth_tmsg ( -- )                           \  выводит текущее значение глубины стека в течении 5 сек.
    
  DEPTH TO index TMSG: "Глубина стека: %index%" 5
;
которое показывает мне глубину стека в начале и конце задачи (если его расположить в соотвествующих местах), и при правильной задаче эта глубина у меня всегда равна 101
 Не знаю почему на стеке остается одно лишнее значение, но DROP в конце задачи помогает  
 
PS не забудь переменную "index" определить
 
добавлено:
Содежимое переменной CLIPBOARD - строка (два значения на стеке)

Всего записей: 529 | Зарегистр. 25-03-2004 | Отправлено: 06:09 09-08-2006 | Исправлено: DJ makrus, 06:12 09-08-2006
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

Компьютерный форум Ru.Board » Компьютеры » Программы » nnCron-Планировщик с поддержкой скриптового языка
Widok (29-01-2008 15:38): лимит страниц. продолжаем здесь


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru