找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21688|回复: 6

[问题求助] 求大神帮忙改一下,VBS循环条件成立退出循环

[复制链接]
发表于 2014-12-12 13:22:04 | 显示全部楼层 |阅读模式
  1. set WshShell = CreateObject("WScript.Shell")
  2. WScript.Sleep 1000      ' 延时1秒
  3. dim wmi,proc,procs,proname,flag,WshShell   
  4.   
  5.     proname="QQ.exe" '服务进程的名称
  6. set wmi=getobject("winmgmts:{impersonationlevel=impersonate}!\\.\root\cimv2")   
  7. set procs=wmi.execquery("select * from win32_process")   
  8.   flag=true   
  9. for each proc in procs   
  10.     if strcomp(proc.name,proname)=0 then   
  11.       flag=false   
  12.       exit for   
  13.     end if   
  14. next   
  15.   set wmi=nothing   
  16.   if flag then   
  17.     Set WshShell = Wscript.CreateObject("Wscript.Shell")   
  18.     WshShell.Run ("D:\QQ\QQ.exe")
  19. end if  
复制代码
求大神帮忙改一下,循环100次检测QQ进程,如果检测次数在100次内QQ进程存在了,就退出速个VBS脚本,如果检测100次还没有QQ进程,就执行D:\QQ\QQ.exe
发表于 2014-12-12 14:36:13 | 显示全部楼层
  1. Const AppName = "QQ.exe"        ' 程序名称
  2. Const AppPath = "D:\QQ\QQ.exe"  ' 程序路径,不知道路径的话留空

  3. Main
  4. Sub Main()
  5.   ' 循环100次
  6.   For i = 1 To 100
  7.     ' 延时 1 秒
  8.     ' WScript.Sleep 1000
  9.     ' 检查QQ是否运行,运行则退出脚本
  10.     If IsRun(AppName, AppPath) > 0 Then WScript.Quit(0)
  11.   Next
  12.   ' 没有QQ运行,则启动QQ
  13.   CreateObject("Wscript.Shell").Run AppPath
  14. End Sub

  15. ' 检查程序是否运行,返回运行个数
  16. ' Eg: IsRun("mshta.exe", "c:\test.hta") > 1
  17. Function IsRun(byVal AppName, byVal AppPath)
  18.     IsRun = 0 : i = 0
  19.     For Each objItem in GetObject("winmgmts:\\.\root\cimv2:win32_process").instances_
  20.         IF LCase(objItem.name) = LCase(AppName) Then
  21.             If AppPath = "" Then IsRun = 1 : Exit Function
  22.             IF Instr( LCase(objItem.CommandLine) , LCase(AppPath) ) Then i = i + 1
  23.         End IF
  24.     Next
  25.     IsRun = i
  26. End Function
复制代码
 楼主| 发表于 2014-12-12 19:05:02 | 显示全部楼层
测试效果不对,和我上面的差不多,并没有循环检测,当没有QQ的时候,没有循环检测到100次,直接就打开QQ了
 楼主| 发表于 2014-12-12 19:07:32 | 显示全部楼层
回复 2# yu2n


    测试效果不对,和我上面的差不多,并没有循环检测,当没有QQ的时候,没有循环检测到100次,直接就打开QQ了
发表于 2014-12-12 22:44:07 | 显示全部楼层
回复 4# ydm566
你是如何判定没有循环100次的?
如果要延时的效果,把第9行代码前的单引号去掉。
如果要体会100次的效果,在第9行后面加1句:
  1. Msgbox Now()
复制代码
 楼主| 发表于 2014-12-13 16:12:31 | 显示全部楼层
回复 5# yu2n


    大神,您测试一下。运行VBS以后,进程里有QQ,并没有退出VBS,还是执行了打开QQ这个操作
发表于 2014-12-13 21:31:28 | 显示全部楼层
代码第2行“ 程序路径,不知道路径的话留空”。
  1. Const AppPath = "D:\QQ\QQ.exe"  ' 程序路径,不知道路径的话留空
复制代码
' 程序路径,不知道路径的话留空
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 13:11 , Processed in 0.012839 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表