Devils Night |
07-04-2012 09:33 1895001 |
Ожидание процессов с разной поледовательностью запуска для их завершения.
В общем задача такая, как сделать так чтобы например запустил батник, и этот батник работал до тех пор пока не появится процесс program.exe, после появления этого процесса батник его бы сразу завершал и закрывался, возможно ли такое!?
|
Devils Night |
07-04-2012 09:55 1895006 |
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 и причём последовательность их запуска меняется, это как нибудь решается?
|
Ожидаем появления любого из «program.exe», «program2.exe», «program3.exe», закрываем его и завершаем работу пакетного файла — так?
|
Devils Night |
07-04-2012 10:13 1895011 |
Iska, Именно.
|
Тогда предложу 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 1895025 |
Iska, Спасибо, я так понимаю это в один из файлов vbs, wsf, wsf вставлять этот код, потом от командной строки запустить?
|
Время: 16:10.
© OSzone.net 2001-