1 (изменено: DnsIs, 2013-08-10 12:29:44)

Тема: JScript: Запуск программ с заданым интервалом

Доброго дня.

Понадобилось запускать несколько программ с определенным интервалом, наклепал: 

PROGS = [
        {name: "prog_1.exe", interval: 5, timer: 0},
        {name: "prog_2.exe", interval: 14, timer: 0}
];

now = function (){return new Date().getTime()}

while (true) {
    for (var i = PROGS.length; i--;)
    if ((PROGS[i].timer - now()) < 0) {
        PROGS[i].timer = now() + PROGS[i].interval * 1000;
        run (PROGS[i].name);
    }
    WScript.Sleep(500);
}

function run (prog) {
    return 0;
}

Предложите варианты оптимизации. Мне почему то всегда кажется, что "while" + "Sleep"  - это не очень хорошо.

Благодарю.

Нас невозможно сбить с пути, нам пофигу куда идти.

2

Re: JScript: Запуск программ с заданым интервалом

Как назначить задание в Microsoft Windows XP: http://support.microsoft.com/kb/308569/ru
Планировщик задач (Task Scheduler): http://www.ixbt.com/soft/ms-task-scheduler.shtml

3

Re: JScript: Запуск программ с заданым интервалом

Заметьте, что интервалы в секундах.

Нас невозможно сбить с пути, нам пофигу куда идти.

4

Re: JScript: Запуск программ с заданым интервалом

DnsIs пишет:

Мне почему то всегда кажется, что "while" + "Sleep"  - это не очень хорошо.

Думаю, вам надо разобраться, почему вам так кажется. Тогда будет что обсуждать. А может, проблема исчезнет сама собой.

5

Re: JScript: Запуск программ с заданым интервалом

Самое ценное в описании планировщика задач находится в самом конце страницы

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

schtasks /?

Если все-таки очень хочется делать это из JS предлагаю посмотреть в сторону setTimeout.

( 2 * b ) || ! ( 2 * b )

6 (изменено: DnsIs, 2013-08-10 16:26:49)

Re: JScript: Запуск программ с заданым интервалом

YMP пишет:

Думаю, вам надо разобраться, почему вам так кажется. Тогда будет что обсуждать. А может, проблема исчезнет сама собой.

Не знаю как будет работать на загруженной машине, много ли ресурсов забирает такая конструкция.

Rumata пишет:

Если все-таки очень хочется делать это из JS предлагаю посмотреть в сторону setTimeout.

Интересно как? Подключать ActiveXObject( "htmlfile" )?

Нас невозможно сбить с пути, нам пофигу куда идти.

7

Re: JScript: Запуск программ с заданым интервалом

DnsIs пишет:

Не знаю как будет работать на загруженной машине, много ли ресурсов забирает такая конструкция.

Она у вас в основном спит, т.е. ничего не делает.

8 (изменено: Rumata, 2013-08-10 17:11:46)

Re: JScript: Запуск программ с заданым интервалом

DnsIs пишет:

Интересно как? Подключать ActiveXObject( "htmlfile" )?

Я это и подразумевал. Другие нативные (без привлечения сторонних библиотек) способы мне неизвестны.

Мне кажется, лучше использовать schtasks.

( 2 * b ) || ! ( 2 * b )

9

Re: JScript: Запуск программ с заданым интервалом

DnsIs пишет:

Заметьте, что интервалы в секундах.

schtasks не может запукать прогу каждые 5 секунд, не так ли?

Нас невозможно сбить с пути, нам пофигу куда идти.

10

Re: JScript: Запуск программ с заданым интервалом

А зачем запускать "прогу" каждые пять секунд, не секрет?

11

Re: JScript: Запуск программ с заданым интервалом

Вот . Наконец-то. Добрались до (выделение моё):

§4.10 Если Вы задаёте конкретный вопрос по программированию, всегда указывайте свою конечную цель, если есть такая возможность. Помните, что Ваша проблема может не нуждаться в решении. Не заставляйте отвечающих заниматься изобретением велосипедов, которые Вы выкинете через полчаса, когда поймёте суть своей проблемы до конца.

Главный вопрос — зачем? Причём не одно, а несколько приложений.

12

Re: JScript: Запуск программ с заданым интервалом

Костыли конечно, но:

Стоит антивирус Авира, который при обновлении показывает гадкое окошко, скрипт каждые 2 секунды проверка наличия окна и закрытие его.

Иногда требуется снять с вебкамеры некоторое количеств снимков, каждые 15 секунд.

Нас невозможно сбить с пути, нам пофигу куда идти.

13

Re: JScript: Запуск программ с заданым интервалом

На оба случая можно оформить подписку на события WMI - оптимальнее некуда .

14

Re: JScript: Запуск программ с заданым интервалом

dab00 пишет:

На оба случая можно оформить подписку на события WMI - оптимальнее некуда .

Офигенно, я не знал. Пошел читать.

Спасибо.

Нас невозможно сбить с пути, нам пофигу куда идти.