' Display the names in C:\ that represent directories.
MyPath = "c:\" ' Set the path.
MyName = Dir(MyPath, vbDirectory) ' Retrieve the first entry.
Do While MyName <> "" ' Start the loop.
' Use bitwise comparison to make sure MyName is a directory.
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
' Display entry only if it's a directory.
MsgBox(MyName)
End If
MyName = Dir() ' Get next entry.
Loop
我正在查看上面的代码。我特别不明白&#34; MyName = Dir()&#34;确实。评论它是下一个条目,但我不明白它是如何得到下一个条目 - 具体是Dir()做什么?
答案 0 :(得分:10)
Dir
是具有边缘效应的函数。
第一次调用Dir
:MyName = Dir(MyPath, vbDirectory)
初始化Dir
内部并返回第一个目录条目。
对Dir
的后续调用使用相同的上下文,逐个生成MyPath
目录内容。
它不是可重入的(这也是为什么你不能使用Dir嵌套/递归多个循环的原因),不是很优雅,但这就是它的工作原理。
答案 1 :(得分:2)
根据Dir()
MSDN,它
返回一个字符串,表示与指定的模式或文件属性或驱动器的卷标签匹配的文件,目录或文件夹的名称。