求问怎样让VBS根据进程判断依次运行2个可执行文件?
怎样让VBS判断A.exe在进程里存在,则执行B.exe程序;如果不存在则依次执行A.exe和B.exe程序依次执行A.exe和B.exe程序之间也可以停顿1~2秒...
怎样让VBS判断A.exe在进程里存在,则执行B.exe程序;如果不存在则依次执行A.exe和B.exe程序
依次执行A.exe和B.exe程序之间也可以停顿1~2秒 展开
依次执行A.exe和B.exe程序之间也可以停顿1~2秒 展开
展开全部
VBS版一个。全程手打,请笑纳~
on error resume next
dim objProcess
Set objWMIService =GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
set colProcessList = objWMIService.execquery("select * from win32_process where name='A.exe'")
Set oobjRun = CreateObject("Wscript.Shell")
If colProcessList.Count = 0 Then'如果返回0查询不到指定进程
oobjRun.Run "C:\A.exe", 1, True
'等待3秒
wscript.sleep 3000
oobjRun.Run "C:\B.exe", 1, True
else
oobjRun.Run "C:\B.exe", 1, True
End If
on error resume next
dim objProcess
Set objWMIService =GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
set colProcessList = objWMIService.execquery("select * from win32_process where name='A.exe'")
Set oobjRun = CreateObject("Wscript.Shell")
If colProcessList.Count = 0 Then'如果返回0查询不到指定进程
oobjRun.Run "C:\A.exe", 1, True
'等待3秒
wscript.sleep 3000
oobjRun.Run "C:\B.exe", 1, True
else
oobjRun.Run "C:\B.exe", 1, True
End If
追问
辛苦你了,不过有个问题想问一下,在检测到A.exe已经存在进程里时脚本能将B.exe正常运行起来.
当A.exe不存在进程里时,这个脚本确实运行A.exe,但不运行B.exe,当我手动结束A.exe时B.exe跳出来运行了,
我纯粹不懂,还请你帮忙看一下有什么不对的地方没?
另:A.exe和B.exe在同一目录,不需要路径,只运行当前目录里的程序就行了.谢谢!
追答
原理:
1. 首先遍历所有进程,查找进程名等于A.EXE的进程
set colProcessList = objWMIService.execquery("select * from win32_process where name='A.exe'")
2. 根据colProcessList.Count 来判断进程是不是存在。如果是0,表示1 查询到的进程不存在。
1.进程不存在,启动A.EXE,
oobjRun.Run "C:\A.exe", 1, True
等待3秒
wscript.sleep 3000
启动B.EXE
oobjRun.Run "C:\B.exe", 1, True
1.进程存在,启动B.EXE,
oobjRun.Run "C:\B.exe", 1, True
你的问题
>> 当A.exe不存在进程里时,这个脚本确实运行A.exe,但不运行B.exe,
先运行A.EXE,等待A.EXE执行完毕。之后等待3秒,运行B.EXE
>>当我手动结束A.exe时B.exe跳出来运行了,
因为run的第三个参数导致等待进程A.EXE结束。产生延时。
如何解决
oobjRun.Run "C:\B.exe", 1, True 的。TRUE 改为FALSE即可。
on error resume next
dim objProcess
Set objWMIService =GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
set colProcessList = objWMIService.execquery("select * from win32_process where name='A.exe'")
Set oobjRun = CreateObject("Wscript.Shell")
If colProcessList.Count = 0 Then'如果返回0查询不到指定进程
oobjRun.Run "A.exe", 1, FALSE
'等待3秒
wscript.sleep 3000
oobjRun.Run "B.exe", 1, FALSE
else
oobjRun.Run "B.exe", 1, FALSE
End If
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询