Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Помогите конвертировать скрипт "задержки" VBS в автоит. (http://forum.oszone.net/showthread.php?t=211406)

Pozia 18-07-2011 23:24 1715254

Помогите конвертировать скрипт "задержки" VBS в автоит.
 
Есть такой скрипт Sleep.vbs:

Код:

Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
Set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objService, "Win32_Process").objectSet

Do Until False
    Wscript.Sleep 1000
    objRefresher.Refresh
    Flag = True
    For Each objItem in colItems
        If InStr(objItem.ExecutablePath, "setup.exe") Then
            Flag = False
        End If
    Next
    If Flag = True Then
        Exit Do
    End If
Loop

Wscript.Sleep 5000

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

Код:

.\AdminImage\setup.exe /qb /I .\AdminImage\Pozia.ini /language ru-ru
Sleep.vbs
exit

то работа батника не завершится пока в процессах висит setup.exe. В данном случае это нужно, так как при установке автокада сразу сразу работает один setup.exe, а потом закрывается и запускается другой. Соответственно батник отрабатывает раньше времени, что есть плохо. До недавнего времени скрипт прекрасно работал, но в версии автокада 2012 почему то он начал сам зависать в диспетчере и навсегда, хотя уже все setup.exe давно исчезли в процессах. Вот я и подумал, что если через автоит это можно реализовать, то должно быть надежнее. Буду рад помощи. Заранее спасибо.
PS Если моя просьба реализуемая, то хотелось бы задавать имя процесса через ключ, например так:
Код:

Sleep.exe -t setup.exe
Sleep.exe - скомпилированный автоит скрипт.

Creat0R 19-07-2011 01:43 1715326

Я что-то не пойму, зачем батник и vbs если скрипт написан на AutoIt?

P.S
В батнике можно и без vbs устроить проверку процесса:


Код:

.\AdminImage\setup.exe /qb /I .\AdminImage\Pozia.ini /language ru-ru

Call :ProcessWaitClose setup.exe
Exit

:ProcessWaitClose
:Loop
Tasklist /FI "IMAGENAME eq %1" | find /i "%1"
IF ERRORLEVEL 1 Ping -n 1 Localhost > NUL & GOTO :EOF
GOTO Loop

Цитата:

Цитата Pozia
хотелось бы задавать имя процесса через ключ, например так: »

Т.е нужно чтобы AutoIt-скрипт ждал завершения процесса указанного в параметре ком. строки?

Код:

$sProcess = StringRegExpReplace($CmdLineRaw, "(?i).*-t (.*\.[^.\s]{1,}).*", "\1")
ProcessWaitClose($sProcess)


Pozia 19-07-2011 23:33 1715963

Цитата:

Цитата Creat0R
vbs если скрипт написан на AutoIt? »

то есть то, что я привел уже можно в готовом виде скомпилировать в exe? хм... тогда как он с расширением vbs без компилияции работает? Я просто ламер в этих вопросах... (
Цитата:

Цитата Creat0R
P.S
В батнике можно и без vbs устроить проверку процесса: »

это я чуть позже протещу, спасибо большое.
Цитата:

Цитата Creat0R
Т.е нужно чтобы AutoIt-скрипт ждал завершения процесса указанного в параметре ком. строки? »

да. также проверю чуть позже... Спасибо.

Creat0R 20-07-2011 00:01 1715976

Цитата:

Цитата Pozia
то есть то, что я привел уже можно в готовом виде скомпилировать в exe? »

Нет, я к тому, что ни баник, ни vbs не нужны если использовать autoit. Всё можно делать через него.

Pozia 20-07-2011 00:37 1716001

Цитата:

Цитата Creat0R
Всё можно делать через него. »

ну это да. но у меня есть определенный так сказать "стандарт" создания sfx архивов самоустановок прог, и все скрипты пишу через батник, так как в этом хоть что понимаю. к таким эксклюзивам как автоит и vbs прибегаю в исключительных, как сейчас, случаях, и решаю конкретную непосильную другими методами задачу. А в скрипте батника у меня много чего записано для автоустановки моих прог, и я вас замучаю распрашивая как и что на автоит перевести )).

Pozia 18-12-2011 23:25 1817660

Creat0R, немного не получается с вашими скриптами. И через батник и через автоит одни и те же грабли. Суть в следующем.
При выполнении строки ".\AdminImage\setup.exe /qb /I .\AdminImage\Pozia.ini /language ru-ru" процесс "setup.exe" запускается дважды. Первый отрабатывает 30-100 сек (или больше), затем закрывается и запускается второй (основной) setup.exe. Он работает долго (минут 30). И получается батник с проверкой процесса уже отработал и закрылся. А мне нужно, чтобы он ждал завершения второго setup.exe. Пауза во времени между запусками первого и второго setup.exe неизвестна, по разному - зависит от мощность компа (2-60 сек). Можно ли как то подправить скрипт, чтоб он ждал запуска и отработки второго setup.exe?

Pozia 18-12-2011 23:47 1817675

Creat0R, ан нет, поспешил. Батник работает. Продолжаю тестить.


Время: 00:07.

Время: 00:07.
© OSzone.net 2001-