You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBScript中GetDetailsOf方法返回属性名而非实际值的问题

解决VBScript获取文件Author和Last Modified By属性值的问题

我来帮你搞定这个VBScript的痛点!你说的情况太常见了——VBScript遍历速度快,但之前的代码只返回属性名称;VBA能拿到实际值却慢得让人头疼。咱们直接改代码解决问题:

问题根源

你之前的代码应该只是枚举了文件的属性名称集合,没有调用正确的方法去读取属性的实际值。要拿到具体内容,得用Shell对象的ExtendedProperty方法,直接通过属性名称获取对应的值。

完整可运行代码

Option Explicit

Dim objShell, objFolder, objFolderItem, strFolderPath, objFile
Dim author, lastModifiedBy

' 创建Shell应用对象
Set objShell = CreateObject("Shell.Application")

' 弹出文件夹选择对话框,让用户选择目标目录
Set objFolder = objShell.BrowseForFolder(0, "选择要遍历的文件夹:", 0, 0)
If Not objFolder Is Nothing Then
    strFolderPath = objFolder.Self.Path
    WScript.Echo "正在遍历文件夹: " & strFolderPath & vbCrLf
    
    ' 获取文件夹的Namespace对象,用于访问文件属性
    Set objFolder = objShell.Namespace(strFolderPath)
    
    ' 遍历文件夹中的每个项目
    For Each objFolderItem In objFolder.Items
        ' 只处理文件,跳过子文件夹
        If objFolderItem.IsFileSystem And Not objFolderItem.IsFolder Then
            WScript.Echo "文件名: " & objFolderItem.Name
            
            ' 获取Author属性值
            author = objFolderItem.ExtendedProperty("Author")
            If IsEmpty(author) Then
                WScript.Echo "  Author: 无"
            Else
                WScript.Echo "  Author: " & author
            End If
            
            ' 获取Last Modified By属性值(兼容部分文件的"Last Saved By"属性)
            lastModifiedBy = objFolderItem.ExtendedProperty("Last Modified By")
            If IsEmpty(lastModifiedBy) Then
                lastModifiedBy = objFolderItem.ExtendedProperty("Last Saved By")
                If IsEmpty(lastModifiedBy) Then
                    WScript.Echo "  Last Modified By: 无"
                Else
                    WScript.Echo "  Last Modified By: " & lastModifiedBy
                End If
            Else
                WScript.Echo "  Last Modified By: " & lastModifiedBy
            End If
            
            WScript.Echo vbCrLf
        End If
    Next
Else
    WScript.Echo "未选择任何文件夹,程序退出。"
End If

' 释放资源
Set objFolderItem = Nothing
Set objFolder = Nothing
Set objShell = Nothing

代码关键说明

  • 可视化选文件夹:用BrowseForFolder让你不用硬编码路径,灵活选择目标目录
  • 获取实际属性值:核心是objFolderItem.ExtendedProperty("属性名称"),直接读取对应属性的内容,而不是只拿名称
  • 兼容性处理:部分文件(比如Office文档)的“最后修改者”属性可能叫Last Saved By,所以加了 fallback 判断,避免拿不到值的情况
  • 空值处理:判断属性为空时输出“无”,避免控制台显示空行,更清晰

运行方式

把代码保存为GetFileProps.vbs,双击运行即可,会弹出文件夹选择框,选好后就会在控制台输出每个文件的指定属性值。

内容的提问来源于stack exchange,提问作者Torc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:57:07