windows - GetDetailsOf undlader at arbejde, når 'skjul udvidelser for kendte filtyper' er valgt

Indlæg af Hanne Mølgaard Plasc

Problem



Overvej følgende VBScript, som ved kørsel lister alle filer i den aktuelle mappe og deres egenskaber:


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


Hvis jeg kører dette i en mappe, der kun indeholder denne fil og med Windows-indstillingen ' Skjul udvidelser for kendte filtyper ' deaktiveret, får jeg følgende (korrekte) output:


D:defect>cscript //NOLOGO list\_metadata.vbs
Looking at list\_metadata.vbs
Name (0): list\_metadata.vbs
Size (1): 740 bytes
Item type (2): VBScript Script File
Date modified (3): 19/02/2012 12:26
Date created (4): 23/02/2012 22:16
Date accessed (5): 23/02/2012 22:16
Attributes (6): A
Perceived type (9): Unspecified
Owner (10): HOMERichard
Kind (11): Program
Rating (19): Unrated
Computer (53): HOME (this computer)
Filename (155): list\_metadata.vbs
Shared (173): No
Folder name (176): defect
Folder path (177): D:defect
Folder (178): defect (D:)
Path (180): D:defectlist\_metadata.vbs
Type (182): VBScript Script File
Link status (188): Unresolved
Sharing status (269): Not shared


Men hvis jeg kører dette igen med ' Skjul udvidelser for kendte filtyper ' aktiveret, er værdien for hvert element nøjagtig det samme som ejendommen, og navnet på filen i den første linje mangler de udvidelse:


D:defect>cscript //NOLOGO list\_metadata.vbs
Looking at list\_metadata
Name (0): Name
Size (1): Size
Item type (2): Item type
Date modified (3): Date modified
...lots deleted...
Frame width (285): Frame width
Total bitrate (286): Total bitrate
Masters Keywords (debug) (287): Masters Keywords (debug)
Masters Keywords (debug) (288): Masters Keywords (debug)


Er der nogen der ved, hvordan jeg kan ændre denne kode, så den vil fungere uanset om denne indstilling anvendes i Windows eller ej?

Bedste reference


Ejendommen Name er visningsnavnet, ikke filnavnet. For filnavnet skal du bruge egenskaben Path. Men hvorfor udvinder du navnet fra varen, og så analyserer du navnet igen i et emne? Hvorfor ikke bare bruge varen direkte?


sVal = oFolder.GetDetailsOf(oFile, iPos)