[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] [已解决]VBS脚本循环搜索X盘目录的某文件为什么不会自动终止?

这段脚本是循环搜索E盘第一层目录的一个文件,直到文件找到后删除而终止,但是它执行后为什么不会自动终止呢?我知道在sub f()中加入WSCRIPT.QUIT可以退出脚本,但我不想退出脚本,而是继续执行脚本其他命令,请问要如何修改呢?
  1. set ws=createobject("wscript.shell")
  2. set fso=createobject("scripting.filesystemobject")
  3. wc="aa.exe"
  4. pth="e:\"
  5. while true
  6. d pth
  7. wscript.sleep 1000
  8. wend
  9. sub d(x)
  10. for each i in fso.getfolder(x).subfolders
  11. f i
  12. next
  13. end sub
  14. sub f(x)
  15. for each c in fso.getfolder(x).files
  16. if instr(1,c,wc,1)>0 then
  17. fso.deleteFile c
  18. msgbox "ok"
  19. end if
  20. next
  21. end sub
复制代码
1

评分人数

    • broly: 感谢给帖子标题标注[已解决]字样PB + 2

加一句exit sub
---学无止境---

TOP

回复 2# broly

谢谢版主的回复,请问是这样添加吗?
  1. sub f(x)
  2. for each c in fso.getfolder(x).files
  3. if instr(1,c,wc,1)>0 then
  4. fso.deleteFile c
  5. msgbox "ok"
  6. exit sub
  7. end if
  8. next
  9. end sub
复制代码
但我测试之后,脚本依旧在执行"d pth"命令,还是没有终止

TOP

你那个是无限循环来的
  1. while true
  2. d pth
  3. wscript.sleep 1000
  4. wend
复制代码
这里要改。
  1. set ws=createobject("wscript.shell")
  2. set fso=createobject("scripting.filesystemobject")
  3. wc="aa.exe"
  4. pth="e:\"
  5. d pth
  6. wscript.sleep 1000
  7. sub d(x)
  8. for each i in fso.getfolder(x).subfolders
  9. f i
  10. next
  11. end sub
  12. sub f(x)
  13. for each c in fso.getfolder(x).files
  14. if instr(1,c,wc,1)>0 then
  15. fso.deleteFile c
  16. msgbox "ok"
  17. end if
  18. next
  19. end sub
复制代码
---学无止境---

TOP

本帖最后由 samsinn 于 2012-1-15 11:20 编辑

其实我的意思是想弄个监视文件创建后删除并继续其他命令的脚本,我就是不知道要如何改才能不死循环
  1. Set Fso = CreateObject("scripting.filesystemobject")
  2. Set Folder = Fso.GetFolder("e:\")
  3. set SubFolders = Folder.SubFolders
  4. do
  5. For Each SubFolder In SubFolders
  6. xf = SubFolder&"\xxx.txt"
  7. If Fso.FileExists(xf) then
  8. Fso.DeleteFile xf, True
  9. exit do
  10. End If
  11. Next
  12. wscript.sleep 100
  13. loop
复制代码
自己找到答案:不使用SUB执行递归的方式,在条件符合后利用exit do跳过即可。

TOP

返回列表