dir_recurse是 php函数,dir_recurse是一个函数么?

Dir 函数

语法:Dir[(pathname[, attributes])]

两个参数都是可选的,attributes表示文件属性。

功能:返回一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。

说明:在第一次调用 Dir 函数时,必须指定 pathname,否则会产生错误。如果也指定了文件属性,那么就必须包括 pathname。

Dir 会返回匹配 pathname 的第一个文件名。若想得到其它匹配 pathname 的文件名,再一次调用 Dir,且不要使用参数。如果已没有合乎条件的文件,则 Dir 会返回一个零长度字符串 ("")。一旦返回值为零长度字符串,并要再次调用 Dir 时,就必须指定 pathname,否则会产生错误。不必访问到所有匹配当前 pathname 的文件名,就可以改变到一个新的 pathname 上。但是,不能以递归方式来调用 Dir 函数。以 vbDirectory 属性来调用 Dir 不能连续地返回子目录。

示例:

Debug.Print Dir("F:\TEST.xls")  ’返回"TEST.xls"

Debug.Print Dir("F:\*.xls")  ’返回按条件第一个找到的文件名。

Debug.Print Dir("F:\*.txt",vbReadOnly) ’返回第一个只读的txt文件

以下过程可显示C盘根目录下的所有目录.

Sub DirC()

MyPath = "c:\"

MyName = dir(MyPath, vbDirectory)     ' 找寻第一项。

Do While MyName <> ""      ' 开始循环。

' 跳过当前的目录及上层目录。

If MyName <> "." And MyName <> ".." Then

' 使用位比较来确定 MyName 代表一目录。

If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then

Debug.Print MyName     ' 如果它是一个目录,将其名称显示出来。

End If

End If

MyName = dir    ' 查找下一个目录。

Loop

End Sub

以下过程利用递归可以查找目录和子目录下的所有文件。

Public Sub FindFile(mPath As String, Optional sFile As String = "")

On Error Resume Next

Dim s As String, sDir() As String

Dim i As Long, d As Long

If Right(mPath, 1) <> "\" Then

mPath = mPath & "\"

End If

'查找目录下的文件

s = dir(mPath & sFile, vbArchive + vbDirectory + vbHidden + vbNormal + vbReadOnly + vbSystem)

Do While s <> ""

Debug.Print mPath & s

s = dir

Loop

'查找目录下的子目录

s = dir(mPath, vbArchive + vbDirectory + vbHidden + vbNormal + vbReadOnly + vbSystem)

Do While s <> ""

If s <> "." And s <> ".." Then

If (GetAttr(mPath & s) And vbDirectory) = vbDirectory Then

d = d + 1

ReDim Preserve sDir(d)

sDir(d) = mPath & s

End If

End If

s = dir

Loop

'开始递归

For i = 1 To d

FindFile sDir(d) & "\"

Next

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值