Я написал Perl-скрипт, который я пытаюсь вызывать каждую 1 минуту из командного файла.

Нет ошибки, но она не вызывается каждые 1 минуту. Это просто всплывающее окно командной строки при нажатии один раз на файл .bat. Мой код, чтобы сделать это: (batchTestShe.bat) ccc.pl и batchTestShe.bat находятся в том же фолде и ccc.pl запускается только после того, как я нажимаю на batchTestShe.bat, но никогда не повторяет выполнение.

schtasks /create /tn "batch Script" /tr C:\shekhar_Axestrack_Intern\WindowCreation\batchTestShe.bat /sc minute /mo 1 
perl C:\shekhar_Axestrack_Intern\WindowCreation\ccc.pl

Я могу видеть в taskschd.msc, что он показывает, что nect выполняется в следующую минуту, но не выдает командную строку в следующую минуту. ПОЧЕМУ любая идея?

И, пожалуйста, обратите внимание, что я также не хочу что-то сообщение на приглашение, как. Этот файл уже существует. Вы хотите переименовать его Y/N? Я хочу просто запускать его каждую минуту без перерыва.

2 ответа2

0

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

:START
    perl C:\shekhar_Axestrack_Intern\WindowCreation\ccc.pl
    timeout /t 60
goto :START

Или оберните ваш Perl-скрипт в цикл while для запуска каждые 60 секунд:

while (1) {
    sleep 60;
    your ccc.pl code goes here;
}

Эти решения приведут к дрейфу, поскольку для их выполнения требуется (60 секунд + время выполнения скрипта). Если вам нужно, чтобы он запускался ровно каждые 60 секунд, придерживайтесь подхода планировщика задач, но попробуйте запустить скрипт perl напрямую, а не через пакетный файл. Также убедитесь, что запуск сценария занимает не более 60 секунд, иначе вы можете запустить несколько экземпляров параллельно.

schtasks /create /tn "run ccc.pl once a minute" /tr "perl C:\shekhar_Axestrack_Intern\WindowCreation\ccc.pl" /sc minute /mo 1
0

Если все, что делает ваш пакетный скрипт, это вызывает Perl-скрипт каждые 60 секунд, тогда вы можете поместить логику в свой Perl-скрипт и уменьшить помехи.

#!perl

while(1){

...

Your code here

...

sleep(60);
}

Если вам нужно более продвинутое планирование, вы можете даже использовать модуль, такой как https://metacpan.org/pod/EV::Cron, чтобы включить планирование заданий Cron-ish в вашей системе.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .