为了账号安全,请及时绑定邮箱和手机立即绑定

dir_recurse是一个函数么?

dir_recurse是一个函数么?

汪汪一只猫 2019-05-18 11:07:55
dir_recurse是一个函数么?
查看完整描述

3 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

 Dir函数
  返回一个 String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。
  函数说明:
  Dir 支持多字符 (*) 和单字符 (?) 的通配符来指定多重文件。
  由于 Macintosh 不支持通配符,使用文件类型指定文件组。可以使用 MacID 函数指定文件类型而不用文件名。比如,下列语句返回当前文件夹中第一个TEXT文件的名称:Dir("SomePath", MacID("TEXT"))
  为选中文件夹中所有文件,指定一空串:Dir("")
  在 Microsoft Windows 中,如果在Dir函数中使用MacID函数,将产生错误。
  任何大于256的attribute值都被认为是MacID 函数的值。
  在第一次调用 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



查看完整回答
反对 回复 2019-05-25
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-05-25
?
智慧大石

TA贡献1946条经验 获得超3个赞

dirname是一个自定义变量的名称
Dir是一个函数
--------------
Dir 函数示例

本示例使用 Dir 函数来检查某些文件或目录是否存在。在 Macintosh 计算机上,默认驱动器名称是 “HD” ,并且路径部分由冒号取代反斜线隔开。而且 Microsoft Windows 的通配符在 Mac 中可以作为有效字符出现在文件名中。也可以使用 MacID 函数来指定文件组。

Dim MyFile, MyPath, MyName

' 返回“WIN.INI”(在 Microsoft Windows 中) (如果该文件存在)。
MyFile = Dir("C:\WINDOWS\WIN.ini")

' 返回带指定扩展名的文件名。如果超过一个 *.ini 文件存在,
' 函数将返回按条件第一个找到的文件名。
MyFile = Dir("C:\WINDOWS\*.ini")

' 若第二次调用 Dir 函数,但不带任何参数,则函数将返回同一目录下的下一个 *.ini 文件。
MyFile = Dir

查看完整回答
反对 回复 2019-05-25
  • 3 回答
  • 0 关注
  • 831 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信