Dir 函数

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

注意: 如果 Microsoft Jet 表达式服务运行在沙盒模式下,可防止潜在不安全的表达式的求值,则禁用函数、 方法、 对象或本主题中介绍的属性。沙盒模式的详细信息,"沙盒模式"中搜索帮助。

返回一个字符串,表示的文件、 目录或文件夹符合指定的模式或文件属性名称或驱动器卷标签。

语法

Dir[路径名[、 特性] )]

Dir函数语法具有以下参数︰

参数

说明

路径名

可选。指定文件名的字符串表达式 — 可能包含目录或文件夹和驱动器。零长度字符串 ("") 将返回如果没有找到路径名

属性

可选。常量或数值表达式,其总和指定文件属性。如果省略,则返回匹配路径名但没有属性的文件。


设置

属性 参数设置为︰

常数

说明

vbNormal

0

(默认值)无属性指定文件。

vbReadOnly

1

无属性指定除了文件的只读文件。

vbHidden

2

无属性指定文件除了隐藏的文件。

VbSystem

4

无属性指定除了文件系统文件。在 Macintosh 上不可用。

vbVolume

8

指定卷标签;如果指定了任何其他属性,则忽略vbVolume 。在 Macintosh 上不可用。

vbDirectory

16

不具有任何属性中指定目录或除了文件的文件夹。

vbAlias

64

指定的文件名是别名。仅在 Macintosh 上可用。


注意: 这些常量指定通过 Visual Basic for Applications (VBA),并且可以使用的实际值代替代码中的任意位置。

备注

在 Microsoft Windows Dir支持使用多个字符 (*) 和单个字符 () 通配符指定多个文件。在 Macintosh 上,这些字符将被视为有效的文件名字符,不能用作通配符指定多个文件。

由于 Macintosh 不支持通配符,使用的文件类型以标识文件的组。您可以使用MacID函数指定文件类型,而不是使用文件名。例如,以下语句返回当前文件夹中的第一个文本文件的名称︰

Dir("SomePath", MacID("TEXT"))

若要遍历的文件夹中的所有文件,指定一个空字符串︰

Dir("")

如果在 Windows 中的目录中使用MacID函数,将发生错误。

任何大于 256 被视为MacID值的属性值。

您必须在第一次指定路径名呼叫Dir函数,或者出现错误。如果您还可以指定文件属性,则必须包含路径名

Dir返回第一个文件名称相匹配路径名。若要获取匹配路径名任何附加的文件的名称,不带任何参数再次调用Dir 。如果没有更多文件名称匹配, Dir将返回的零长度字符串 ("")。一旦返回的零长度字符串,您必须在后续调用中指定路径名或发生错误。您可以更改为新的路径名,而不检索的所有文件名称相匹配当前路径名。但是,您无法递归调用Dir 函数。与vbDirectory属性调用Dir不持续返回子目录。

提示    因为任何特定顺序检索文件的名称时,您可能想要存储在数组,返回的文件名,然后进行排序数组。

示例

注意: 下面的示例说明使用此函数在 Visual Basic for Applications (VBA) 模块。有关处理 VBA 的详细信息,搜索旁边的下拉列表中选择开发人员参考,然后在搜索框中输入一个或多个条款。

此示例使用Dir函数检查某些文件和目录是否存在。在 Macintosh 上,"HD:"是默认的驱动器名称,而不是反斜杠分号分隔路径名的部分。此外,Windows 通配符字符被视为有效的文件名字符在 Macintosh 上。但是,您可以使用MacID函数指定文件组。

Dim MyFile, MyPath, MyName
' Returns "WIN.INI" (on Microsoft Windows) if it exists.
MyFile = Dir("C:\WINDOWS\WIN.INI")
' Returns filename with specified extension. If more than one *.ini
' file exists, the first file found is returned.
MyFile = Dir("C:\WINDOWS\*.INI")
' Call Dir again without arguments to return the next *.INI file in the
' same directory.
MyFile = Dir
' Return first *.TXT file with a set hidden attribute.
MyFile = Dir("*.TXT", vbHidden)
' 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.
' Ignore the current directory and the encompassing directory.
If MyName <> "." And MyName <> ".." Then
' Use bitwise comparison to make sure MyName is a directory.
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
Debug.Print MyName ' Display entry only if it
End If ' it represents a directory.
End If
MyName = Dir ' Get next entry.
Loop

注意: 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×