下面代码,只能获取系统隐藏文件夹和普通文件夹,
Dim strFile As String
Const strPath = "c:\"
strFile = Dir(strPath, vbDirectory Or vbHidden Or vbNormal Or vbReadOnly)
Do While strFile <> ""
DoEvents
If (GetAttr(strPath + strFile) And vbDirectory) = vbDirectory Then
If strFile <> "." And strFile <> ".." Then
Print strFile
End If
End If
strFile = Dir
Loop那么如何获取拥有 系统隐藏属性的文件夹,
另外,大家有没有专门处理 文件夹的 API函数集合表
Dim strFile As String
Const strPath = "c:\"
strFile = Dir(strPath, vbDirectory Or vbHidden Or vbNormal Or vbReadOnly)
Do While strFile <> ""
DoEvents
If (GetAttr(strPath + strFile) And vbDirectory) = vbDirectory Then
If strFile <> "." And strFile <> ".." Then
Print strFile
End If
End If
strFile = Dir
Loop那么如何获取拥有 系统隐藏属性的文件夹,
另外,大家有没有专门处理 文件夹的 API函数集合表
返回一个 String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。语法Dir[(pathname[, attributes])]Dir 函数的语法具有以下几个部分:部分 描述
pathname 可选参数。用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。如果没有找到 pathname,则会返回零长度字符串 ("")。
attributes 可选参数。常数或数值表达式,其总和用来指定文件属性。如果省略,则会返回匹配 pathname 但不包含属性的文件。
设置值attributes 参数的设置可为:常数 值 描述
vbNormal 0 (缺省) 指定没有属性的文件。
vbReadOnly 1 指定无属性的只读文件
vbHidden 2 指定无属性的隐藏文件
VbSystem 4 指定无属性的系统文件
vbVolume 8 指定卷标文件;如果指定了其它属性,则忽略vbVolume
vbDirectory 16 指定无属性文件及其路径和文件夹。
注意 这些常数是由 VBA 所指定的,在程序代码中的任何位置,可以使用这些常数来替换真正的数值。说明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 不能连续地返回子目录。提示 由于文件名并不会以特别的次序来返回,所以可以将文件名存储在一个数组中,然后再对这个数组排序。
vbNormal 和 vbReadOnly 可以不要。strFile = Dir(strPath, 22)就可以列出所有文件和文件夹了。
'接下来读c:\hsfiles.txt文件的内容
Dim Fil As String
Fil = Dir("C:\*.*", vbHidden + vbSystem + vbReadOnly + vbDirectory)
While Fil <> ""
If GetAttr(Fil) <> vbDirectory Then
List1.AddItem Fil
Fil = Dir
Wend
End If
End Sub我用上面的代码,虽然可以显示 指定路径的所有文件夹,
但是C:盘下有个文件pagefile.sys也被显示了(它不是文件夹哦),大家分析一下这是为什么?
我的C:盘下文件名如下:
boot.ini 隐藏,存档
boot.xps 隐藏
bootfont.bin 隐藏,存档,系统
BOOTLOG.TXT 隐藏,存档,系统
grldr 隐藏,存档,系统
huanjue2boot.bak 隐藏,存档,系统
IO.SYS 隐藏,存档,系统
menu.lst 隐藏,存档,系统
MSDOS.SYS 隐藏,存档,系统
NTDETECT.COM 隐藏,存档,系统
ntldr 隐藏,存档,系统
pagefile.sys 隐藏,系统
bholog 存档
为什么获取文件夹时,多了一个文件的名字?
有机会再另找一台电脑看看。
目前在我的电脑上,用:
dir /a:d列出来的全是文件夹(命令行窗口)。