Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Время ожидания окончания работы программы

Ответить
Настройки темы
[решено] Время ожидания окончания работы программы

Пользователь


Сообщения: 121
Благодарности: 3

Профиль | Отправить PM | Цитировать


Изменения
Автор: SanyaJoker
Дата: 27-02-2009
Доброго времени суток!

Возникла такая проблема необходимо запустить bat скрипт который в свою очередь выполняет свои задачи но при этом часто возникают ошибки о которых bat скрипт не знает и считает это продолжением своей работы. Я хочу реализовать на AutoIT запуск этого bat скрипта и по истечению определенного времени если bat скрипт не выполняется до конца AutoIT отсылал net send на определенные компьютеры что произошла ошибка. Как можно это реализовать в AutoIT?

Заранее благодарен!

Отправлено: 16:49, 27-02-2009

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Во-первых, как AutoIT должен определить, что "bat скрипт не выполняется до конца"?
Во-вторых, не проще ли в таком случае переписать весь BAT на AutoIT?

Отправлено: 04:37, 28-02-2009 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 121
Благодарности: 3

Профиль | Отправить PM | Цитировать


Ну я так думаю можно осуществить с помощью RunWait с ожиданием окончания запущенного скрипта можно конечно и перебить весть скрипт на AutoIT но суть проблемы остается та же если часть кода не выполняется определенное время нужно отослать net send на определенные компьютеры. Вот именно это у меня и не получается осуществить...

Отправлено: 10:13, 02-03-2009 | #3


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


отослать NET SEND думаю тоже не проблема (или проблема?)... мне к примеру неясно, что значит "часть кода не выполняется определенное время"?.. в смысле "время выполнения CMD больше заданного интервала" или что-то другое?.. давайте без двусмысленностей в формулировках, а еще лучше выложить какой-никакой пример

Отправлено: 11:47, 02-03-2009 | #4


Пользователь


Сообщения: 121
Благодарности: 3

Профиль | Отправить PM | Цитировать


Хорошо рассказываю дословно ситуацию. Есть сервер КПК на который через интернет сливают заявки бегающие в поле агенты, затем каждые 15 минут происходит выгрузка этих заявок из КПК в 1С, вот тут и возникает проблема. При выгрузке заявок из базы данных КПК в пост операцию забит этот самый батник который пинает 1С на их загрузку в базу. Но при этом бывает возникают проблемы как пример возьмем проблему занят каталог пользователя. 1С выдает при этом ошибку в ожидании вмешательства пользователя. В свою очередь батник все еще считает что задача выполняется и это может длится до бесконечности. Поэтому и хочется найти вариант если этот батник не выполнился так скажем за 10 минут отправить на определенные компьютеры net send о том что операция задержалась...

Последний раз редактировалось SanyaJoker, 02-03-2009 в 15:48.


Отправлено: 14:12, 02-03-2009 | #5


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата SanyaJoker:
хочется найти вариант если этот батник не выполнился так скажем за 10 минут отправить на определенные компьютеры net send о том что операция задержалась »
если навскидку примерно так, при желании "NET SEND" можно переписать через UDF вместо CMD:
Код: Выделить весь код
Dim $aCOMP[3] = ["COMP1","COMP2","COMP3"]
; Команда запуска скрипта
$CMD1 = @ComSpec & " /c " & 'C:\TEST\script.cmd'
$TEXT = "Текст сообщения"
; Запуск скрипта в скрытом окне
$PID = Run($CMD1, "", @SW_HIDE)

While 1
    $RET = ProcessWaitClose ($PID, 600) ; ожидание завершения
    If $RET Then ExitLoop               ; выход при успехе
    For $i=0 To UBound($aCOMP)-1        ; перебираем хосты
        ; Команда отправки сообщения очередному хосту
        $CMD2 = @ComSpec & " /c " &'NET SEND '& $aCOMP[$i] &' "'& $TEXT &'"'
        RunWait($CMD2, "", @SW_HIDE) ; запуск CMD команды в скрытом окне
    Next
WEnd
З.Ы. извиняюсь, не было возможности протестировать

Последний раз редактировалось amel27, 04-03-2009 в 12:01.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:06, 03-03-2009 | #6


Пользователь


Сообщения: 121
Благодарности: 3

Профиль | Отправить PM | Цитировать


Скрипт запускается все работает. Вот тока ожидание завершения не проходит (то есть 1С выдает ошибку а скрип висит так понимаю у меня ожидание стоит 1 секунда). Перебил на свой лад тестил на минимальном времени ожидания завершения сейчас он выглядит так:


Код: Выделить весь код
Dim $aCOMP[3] = ["admin1","admin3","kpk"]
; Команда запуска скрипта
$CMD1 = @ComSpec & " /c " & 'D:\1C\URBD\Vigr_KPK_ZEN.cmd'
$TEXT = "Задержалась выгрузка на 1cserver2"
; Запуск скрипта в скрытом окне
$PID = Run($CMD1, "", @SW_HIDE)

While 1
    $RET = ProcessWaitClose ($PID, 1) ; ожидание завершения
    If $RET Then ExitLoop               ; выход при успехе
    For $i=0 To UBound($aCOMP)-1        ; перебираем хосты
        ; Команда отправки сообщения очередному хосту
        $CMD2 = @ComSpec & " /c " &'NET SEND '& $aCOMP[$i] &'"'& $TEXT &'"'
        RunWait($CMD2, "", @SW_HIDE) ; запуск CMD команды в скрытом окне
    Next
WEnd
Может чего то сделал не правильно?

Последний раз редактировалось SanyaJoker, 03-03-2009 в 18:38.


Отправлено: 18:27, 03-03-2009 | #7


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата SanyaJoker:
1С выдает ошибку а скрип висит так понимаю у меня ожидание стоит 1 секунда »
скрипт крутится в бесконечном цикле, периодически (через 1 сек.) проверяя наличие процесса, если процесс в памяти - отрабатывает "NET SEND", если уже нет - выходит из цикла... т.е. только по завершению работы батника... разве не это было нужно?

...сообщения-то отправляются хоть?

Отправлено: 07:30, 04-03-2009 | #8


Пользователь


Сообщения: 121
Благодарности: 3

Профиль | Отправить PM | Цитировать


Все правильно, как раз это и нужно но сообщение не отправляется.

Отправлено: 10:42, 04-03-2009 | #9


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата SanyaJoker:
но сообщение не отправляется »
а, понятно - я пропустил пробел между именем хоста и текстом сообщения (исправил), на будущее - отлаживать CMD нужно, заменив "/c" на "/k" (не закрывать окно) и убрав @SW_HIDE (отображать окно), тогда видно текст ошибки

Отправлено: 12:05, 04-03-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Время ожидания окончания работы программы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как сократить время ожидания завершения работы системы Flick Microsoft Windows NT/2000/2003 10 20-12-2012 17:11
HDD - выключился Пк во время работы программы Acronis DD 10 по изменению размера HDD руслан-р Накопители (SSD, HDD, USB Flash) 1 16-12-2009 02:03
Службы - FTP Ошибка "Сервер не отвечает (время ожидания истекло)!" Veland Сетевые технологии 1 07-01-2009 00:30
Интернет - Время ожидания соединения истекло slenok Microsoft Windows 2000/XP 15 29-03-2008 10:44
Через некоторое время после окончания установки ОС win входит под Администратором ... AlexKan Автоматическая установка Windows 2000/XP/2003 11 27-08-2006 12:51




 
Переход