Войти

Показать полную графическую версию : Помогите конвертировать скрипт "задержки" VBS в автоит.


Pozia
18-07-2011, 23:24
Есть такой скрипт 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
Я что-то не пойму, зачем батник и 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

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

$sProcess = StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($CmdLineRaw, "(?i).*-t (.*\.[^.\s]{1,}).*", "\1")
ProcessWaitClose (http://www.autoitscript.com/autoit3/docs/functions/ProcessWaitClose.htm)($sProcess)

Pozia
19-07-2011, 23:33
vbs если скрипт написан на AutoIt? »
то есть то, что я привел уже можно в готовом виде скомпилировать в exe? хм... тогда как он с расширением vbs без компилияции работает? Я просто ламер в этих вопросах... (
P.S
В батнике можно и без vbs устроить проверку процесса: »
это я чуть позже протещу, спасибо большое.
Т.е нужно чтобы AutoIt-скрипт ждал завершения процесса указанного в параметре ком. строки? »
да. также проверю чуть позже... Спасибо.

Creat0R
20-07-2011, 00:01
то есть то, что я привел уже можно в готовом виде скомпилировать в exe? »
Нет, я к тому, что ни баник, ни vbs не нужны если использовать autoit. Всё можно делать через него.

Pozia
20-07-2011, 00:37
Всё можно делать через него. »
ну это да. но у меня есть определенный так сказать "стандарт" создания sfx архивов самоустановок прог, и все скрипты пишу через батник, так как в этом хоть что понимаю. к таким эксклюзивам как автоит и vbs прибегаю в исключительных, как сейчас, случаях, и решаю конкретную непосильную другими методами задачу. А в скрипте батника у меня много чего записано для автоустановки моих прог, и я вас замучаю распрашивая как и что на автоит перевести )).

Pozia
18-12-2011, 23:25
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
Creat0R, ан нет, поспешил. Батник работает. Продолжаю тестить.




© OSzone.net 2001-2012