Board logo

标题: [问题求助] [已解决]VBS下如何终止循环中得调用bat [打印本页]

作者: ydfan8888    时间: 2012-3-24 14:02     标题: [已解决]VBS下如何终止循环中得调用bat

最近头都忙大了,为了一个判定磁盘容量大小并调用bat删除的脚本。具体脚本如下,能够实现判定F盘的可用磁盘容量,且能够自行删除,但是现在的问题是,do循环里面的调用bat脚本停不下来,一直在运行。如要如何修改此vbs脚本。
  1. Set objWMIService = GetObject("winmgmts:")
  2. Set objLogicalDisk = objWMIService.get("Win32_LogicalDisk.DeviceID='f:'")
  3. Dim a
  4. Dim s
  5. Dim m
  6. Dim c
  7. Dim w
  8. c = now
  9. s = objLogicaldisk.Size/(1024*1024*1024)
  10. s = round(s,2)
  11. ' WScript.Echo "全部磁盘:"&s& " G "
  12. m = objLogicalDisk.FreeSpace/(1024*1024*1024)
  13. m = round(m,2)
  14. ' WScript.Echo "剩余空间:"&m& " G "
  15. a = m/s
  16. a = round(a,2)
  17. Do Until a > 0.6
  18. Set shell = WScript.CreateObject("WScript.Shell")
  19. shell.Run"f:\2.bat",0
  20. Loop
  21. w = (FormatPercent(a,2))
  22. ' WScript.Echo " 磁盘剩余空间= "&w
  23. call mail()
复制代码

作者: find    时间: 2012-3-24 14:45

  1. Do Until a > 0.6
  2. Set shell = WScript.CreateObject("WScript.Shell")
  3. shell.Run"f:\2.bat",0
  4. Loop
复制代码
这里为什么不改变a的值让它退出循环?
作者: ydfan8888    时间: 2012-3-24 15:12

本帖最后由 ydfan8888 于 2012-3-24 15:17 编辑
这里为什么不改变a的值让它退出循环?
find 发表于 2012-3-24 14:45


Do Until a > 0.6
Set shell = WScript.CreateObject("WScript.Shell")
shell.Run"f:\2.bat",0
s = objLogicaldisk.Size/(1024*1024*1024)
s = round(s,2)
m = objLogicalDisk.FreeSpace/(1024*1024*1024)
m = round(m,2)
a = m/s
a = round(a,2)
Loop

改变了执行也一样的! 在一直的调用。如何做到。>=0.6时就自动退出循环
作者: find    时间: 2012-3-24 17:03

回复 3# ydfan8888


在Loop上面加一句,输出变量a的值,观察一下。
作者: ydfan8888    时间: 2012-3-26 11:10

回复  ydfan8888


在Loop上面加一句,输出变量a的值,观察一下。
find 发表于 2012-3-24 17:03



    如何修改呢?
作者: find    时间: 2012-3-26 12:55

回复 5# ydfan8888
  1. WScript.Echo a
复制代码

作者: ydfan8888    时间: 2012-3-26 13:15

回复  ydfan8888
find 发表于 2012-3-26 12:55



    谢谢 问题解决了
作者: find    时间: 2012-3-26 15:05

回复 7# ydfan8888


问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2