我有两个进程正在运行(Windows7教程中的foo.cmd和bar.cmd),如果另一个进程仍在运行,它们会经常检查。
由于每个进程都知道变量%FPID%
中其他进程的PID,因此我用来检查其他进程是否仍然像这样运行
FOR /F "tokens=1,*" %%a in ('tasklist /FI "PID eq %FPID%" /NH ^| find /C "%FPID%"') do set COUNTP=%%a
如果%COUNTP%
现在大于0,则另一个进程仍在运行。
但是,即使另一个进程实际上仍在运行(它仍然写入日志文件),偶尔%COUNTP%
等于0。
一秒钟后,它可以再次被发现。
答案 0 :(得分:0)
在我的脑海中,我正在查看WMI事件观察者的__InstanceDeletionEvent类。如果你选择那条路线,这个剪辑将让你朝着正确的方向前进,由WMI Code Creator提供。
基本上,WMI会等待并检测$ pid何时关闭,并在发生这种情况的1秒内执行命令。
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set objEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance.ProcessId = 1900")
Wscript.Echo "Waiting for events ..."
Do While(True)
Set objReceivedEvent = objEvents.NextEvent
'report an event
Wscript.Echo "__InstanceDeletionEvent event has occurred."
Loop