【问题标题】:Get attributes of hidden files获取隐藏文件的属性
【发布时间】:2015-04-21 09:52:44
【问题描述】:

我正在尝试从指定目录中获取所有 [非空] 文件属性。如何遍历目录并将文件设置为不隐藏[“For Each ...”省略它们]?

Sub SomeProc()

Dim sFile As Variant
Dim oShell: Set oShell = CreateObject("Shell.Application")
Dim oDir:   Set oDir = oShell.Namespace("c:\SomePath")

SetAttr "c:\SomePath\SomeFile.accdb", vbNormal

For Each sFile In oDir.Items
    For i = 0 To 288
        If oDir.GetDetailsOf(sFile, i) <> "" Then
            Debug.Print i & ": " & oDir.GetDetailsOf(oDir.Items, i) & ": " & oDir.GetDetailsOf(sFile, i)
        End If
    Next i
Next

SetAttr "c:\SomePath\SomeFile.accdb", vbHidden

End Sub

编辑:

感谢 Alex K. 的提示 [他的代码没有显示属性的值] 我设法做到了:它有效,但我想存在性能问题 [而且它没有考虑子文件夹 -没问题]

Sub SomeProc()

Const PATH As String = "c:\SomePath\"

Dim sFile As Variant
Dim sFileName As String
Dim oShell As Object
Dim oDir As Object
Dim i, k As Long

Set oShell = CreateObject("Shell.Application")
Set oDir = oShell.Namespace(PATH)

sFileName = Dir$(PATH & "*.*", vbHidden)
k = 0
Do Until Len(sFileName) = 0
k = k + 1

Set sFile = oDir.parsename(sFileName)
For i = 0 To 288
    If oDir.GetDetailsOf(sFile, i) <> "" Then
        Sheets(1).Cells(i + 1, k).Value = i & ": " & oDir.GetDetailsOf(oDir.Items, i) & ": " & oDir.GetDetailsOf(sFile, i)
    End If
Next i

sFileName = Dir$()
Loop

End Sub

我也发现了不同的方法:http://www.techbookreport.com/tutorials/vb_fileattributes.html

【问题讨论】:

    标签: vba attributes hidden


    【解决方案1】:

    GetDetailsOf() 适用于隐藏文件,只有枚举不适用。

    使用内置的Dir$() 函数列出文件,告诉它包含那些具有隐藏属性的文件

    Sub SomeProc()
    Const PATH As String = "c:\SomePath\"
    
    Dim oShell: Set oShell = CreateObject("Shell.Application")
    Dim oDir As Object
    Dim sFileName As String
    Dim i As Long
    
    Set oDir = oShell.Namespace(PATH)
    sFileName = Dir$(PATH & "*.*", vbHidden)
    
    Do Until Len(sFileName) = 0
        For i = 0 To 288
            If oDir.GetDetailsOf(sFileName, i) <> "" Then
                Debug.Print i & ": " & oDir.GetDetailsOf(sFileName, i) & ": " & oDir.GetDetailsOf(sFileName, i)
            End If
        Next i
    
        sFileName = Dir$()
    Loop
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 2019-11-30
      • 2011-08-12
      • 1970-01-01
      • 2014-05-31
      • 1970-01-01
      相关资源
      最近更新 更多