PDA

Показать полную графическую версию : [решено] Ожидание процессов с разной поледовательностью запуска для их завершения.


Devils Night
07-04-2012, 09:33
В общем задача такая, как сделать так чтобы например запустил батник, и этот батник работал до тех пор пока не появится процесс program.exe, после появления этого процесса батник его бы сразу завершал и закрывался, возможно ли такое!?

Iska
07-04-2012, 09:40
Например, так (http://forum.oszone.net/post-1885831.html#post1885831).

Devils Night
07-04-2012, 09:55
Iska, Ага, то есть получается вот так?
:Repeat
>nul ping.exe -n 2 127.0.0.1
taskkill.exe /f /im "setup.exe" || goto :Repeat
Сейчас кое что проверил, и тут вышла одна проблема, по которой такой вопрос:
а что если процесса два и более, например program.exe, program2.exe, program3.exe и причём последовательность их запуска меняется, это как нибудь решается?

Iska
07-04-2012, 10:10
Ожидаем появления любого из «program.exe», «program2.exe», «program3.exe», закрываем его и завершаем работу пакетного файла — так?

Devils Night
07-04-2012, 10:13
Iska, Именно.

Iska
07-04-2012, 10:22
Тогда предложу WSH:
Option Explicit

Dim arrProcesses

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemEventSource

Dim strProcess


arrProcesses = Array("notepad.exe", "calc.exe", "freecell.exe")
strComputer = "."

Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Set objSWbemEventSource = objSWbemServicesEx.ExecNotificationQuery( _
"SELECT * FROM __InstanceCreationEvent " & _
"WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'")

Do
With objSWbemEventSource.NextEvent.TargetInstance
For Each strProcess In arrProcesses
If UCase(.Name) = UCase(strProcess) Then
.Terminate

Exit Do
End If
Next
End With
Loop

Set objSWbemEventSource = Nothing
Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing

WScript.Quit 0

Devils Night
07-04-2012, 10:45
Iska, Спасибо, я так понимаю это в один из файлов vbs, wsf, wsf вставлять этот код, потом от командной строки запустить?

Iska
07-04-2012, 10:59
Да:
vbs »




© OSzone.net 2001-2012