[решено] Время ожидания окончания работы программы

Аватара пользователя
SanyaJoker

[решено] Время ожидания окончания работы программы

Сообщение SanyaJoker »

Доброго времени суток!



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



Заранее благодарен!
Аватара пользователя
amel27

Re: [решено] Время ожидания окончания работы программы

Сообщение amel27 »

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

Во-вторых, не проще ли в таком случае переписать весь BAT на AutoIT?
Аватара пользователя
SanyaJoker

Re: [решено] Время ожидания окончания работы программы

Сообщение SanyaJoker »

Вот теперь все прекрасно работает Изображение Большое человеческое спасибо за помощь. Респект и уважуха amel27 Изображение
Аватара пользователя
amel27

Re: [решено] Время ожидания окончания работы программы

Сообщение amel27 »

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

Re: [решено] Время ожидания окончания работы программы

Сообщение amel27 »

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

Re: [решено] Время ожидания окончания работы программы

Сообщение SanyaJoker »

Цитата 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

Re: [решено] Время ожидания окончания работы программы

Сообщение amel27 »

Скрипт запускается все работает. Вот тока ожидание завершения не проходит (то есть 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

Re: [решено] Время ожидания окончания работы программы

Сообщение SanyaJoker »

Цитата SanyaJoker:



1С выдает ошибку а скрип висит так понимаю у меня ожидание стоит 1 секунда
[решено] Время ожидания окончания работы программы




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



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

Re: [решено] Время ожидания окончания работы программы

Сообщение amel27 »

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

Re: [решено] Время ожидания окончания работы программы

Сообщение SanyaJoker »

Цитата SanyaJoker:



но сообщение не отправляется
[решено] Время ожидания окончания работы программы




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

Вернуться в «AutoIt»