【问题标题】:GetDetailsOf fails to work when "hide extensions for known file types" is selected选择“隐藏已知文件类型的扩展名”时,GetDetailsOf 无法工作
【发布时间】:2012-02-23 22:28:33
【问题描述】:

考虑以下 VBScript,它在运行时会列出当前目录中的所有文件及其属性:

Option Explicit
Dim oShell : Set oShell  = CreateObject("Shell.Application")
Dim oFSO : Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim oFolder : Set oFolder = oShell.Namespace(oFSO.GetParentFolderName(Wscript.ScriptFullName))
Dim oFile, iPos, sHeader(999), sVal
' Get a list of the property names
For iPos = 0 to 999
    sHeader(iPos) = oFolder.GetDetailsOf(oFolder.Items, iPos)
Next
' For each file in this folder, print the property name and the value
For Each oFile in oFolder.Items
    WScript.Echo "Looking at " & oFile.Name
    For iPos = 0 To 999
        sVal = oFolder.GetDetailsOf(oFolder.ParseName(oFile.Name), iPos)
        If sVal <> "" Then WScript.Echo sHeader(iPos) & " (" & iPos & "): " & sVal
    Next
Next

如果我在仅包含此文件的文件夹中运行此程序,并且禁用了 Windows 设置“隐藏已知文件类型的扩展名”,则会得到以下(正确)输出:

D:\defect>cscript //NOLOGO list_metadata.vbs
查看 list_metadata.vbs
名称(0):list_metadata.vbs
大小 (1):740 字节
项目类型(二):VBScript脚本文件
修改日期(3):19/02/2012 12:26
创建日期 (4): 23/02/2012 22:16
访问日期 (5): 23/02/2012 22:16
属性(6):A
感知类型(9):未指定
拥有者 (10): HOME\Richard
种类(11):程序
评级 (19):未评级
电脑(53):HOME(这台电脑)
文件名 (155): list_metadata.vbs
共享 (173):否
文件夹名称(176):缺陷
文件夹路径 (177): D:\defect
文件夹 (178):缺陷 (D:)
路径 (180): D:\defect\list_metadata.vbs
类型 (182):VBScript 脚本文件
链接状态 (188):未解决
共享状态 (269):未共享

但是,如果我在启用“隐藏已知文件类型的扩展名”的情况下再次运行此程序,则每个项目的值与第一行中文件的属性和名称完全相同缺少扩展名:

D:\defect>cscript //NOLOGO list_metadata.vbs
查看 list_metadata
姓名 (0):姓名
尺码 (1): 尺码
项目类型(2):项目类型
修改日期(3):修改日期
...删除了很多...
框架宽度(285):框架宽度
总比特率 (286):总比特率
大师关键词(调试)(287):大师关键词(调试)
大师关键词(调试)(288):大师关键词(调试)

有谁知道我可以如何修改此代码,以便无论此设置是否在 Windows 中应用,它都能正常工作?

【问题讨论】:

    标签: windows file vbscript metadata


    【解决方案1】:

    Name 属性是显示名称,而不是文件名。对于文件名,使用Path 属性。但是为什么要从项目中提取名称,然后将名称解析回项目?为什么不直接使用该项目?

    sVal = oFolder.GetDetailsOf(oFile, iPos) 
    

    【讨论】:

      猜你喜欢
      • 2021-05-23
      • 2020-04-22
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      • 2014-03-29
      • 2021-06-04
      相关资源
      最近更新 更多