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

[问题求助] 为什么vbs脚本无法遍历到所有的文件?转成exe后用管理员身份运行也不行。

[复制链接]
发表于 2021-1-23 19:02:17 | 显示全部楼层 |阅读模式
本帖最后由 悬崖之树 于 2021-1-23 19:22 编辑
  1. On Error Resume Next
  2. Dim FileName,fs,foldername, iCount
  3. foldername = InputBox("请输入要遍历的文件夹")
  4. If foldername = "" Then
  5.         wscript.quit
  6. End If
  7. Set fs = CreateObject("scripting.filesystemobject")
  8. digui(foldername)'调用递归函数进行遍历
  9. MsgBox FileName

  10. '下面是递归查找函数
  11. Function digui(path)
  12.         Set folder = fs.getfolder(path)
  13.         Set subfolders = folder.subfolders
  14.         Set Files = folder.Files
  15.         For Each i In Files
  16.                 FileName=FileName & i.path & vbNewLine '找到则追加到变量FileName中
  17.                 iCount = iCount + 1
  18.                 If iCount = 10 Then
  19.                         MsgBox FileName
  20.                         FileName = ""
  21.                         iCount = 0
  22.                 End If
  23.         Next
  24.         For Each j In subfolders
  25.                 digui (j.path) '递归查找子目录
  26.         Next
  27. End Function
复制代码
估计是脚本在运行时出现了"没有文件或文件夹权限",然后就自动停止后面的递归操作了。能否先判断一下文件或者文件夹权限后,再决定是否对该文件或文件夹进行操作?
发表于 2021-1-27 10:40:29 | 显示全部楼层
  1. Dim ws
  2. Set ws = CreateObject("WScript.Shell")

  3. If WSH.Arguments.Count = 0 Then
  4.     ws.Run "cscript " & chr(34) & WSH.ScriptFullName & chr(34) & " ARG", 0
  5.     WScript.Quit
  6. End If

  7. Dim folderPath, iCount, str, objExec
  8. folderPath = InputBox("输入要遍历的文件夹路径")
  9. If isEmpty(folderPath) Then WScript.Quit

  10. iCount = 0
  11. str = ""
  12. Set objExec = ws.Exec( "cmd /c dir /b /a-d /s " & chr(34) & folderPath & chr(34) )

  13. Do Until objExec.StdOut.AtEndOfStream
  14.     iCount = iCount + 1
  15.     str = str & objExec.StdOut.ReadLine & vbLf
  16.     If iCount Mod 10 = 0 Then
  17.         MsgBox str
  18.         str = ""
  19.     End If
  20. Loop
  21. If str <> "" Then MsgBox str
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:43 , Processed in 0.075116 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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