Vbscript 从文件中获取扩展属性

Vbscript 从文件中获取扩展属性,vbscript,Vbscript,我试图从运行脚本的文件夹中的视频文件中获取扩展文件属性,并将结果输出到文本文件 这是我目前掌握的代码: Dim ls, fsObj, fd, fs, fl, sfs, sf, tf ' specify the file extensions to list dim fileTypes fileTypes = Array("mp4","mkv","avi") On Error Resume Next ls = "" Set fsObj = Creat

我试图从运行脚本的文件夹中的视频文件中获取扩展文件属性,并将结果输出到文本文件

这是我目前掌握的代码:

Dim ls, fsObj, fd, fs, fl, sfs, sf, tf

    ' specify the file extensions to list
    dim fileTypes
    fileTypes = Array("mp4","mkv","avi")

 On Error Resume Next

    ls = ""
    Set fsObj = CreateObject("Scripting.FileSystemObject")
    Set fd = fsObj.GetFolder(".")
Set objFolder = objShell.NameSpace(fsObj)
    set fs = fd.Files

For Each fileName in objFolder.Items
    set objFolderItem = objFolder.ParseName(fileName)
    size = objFolder.GetDetailsOf(objFolderItem, 1)
    length = objFolder.GetDetailsOf(objFolderItem, 27)
    height = objFolder.GetDetailsOf(objFolderItem, 283)
    width  = objFolder.GetDetailsOf(objFolderItem, 285)
Next


    ' list subfolders
    set sfs = fd.SubFolders
    For Each sf in sfs
        ls = ls & sf.name & vbCrLf & chr(10)
    Next

        For Each fl in fs
        ' check whether the extension matches 
        if arrayContains(fileTypes, fsObj.GetExtensionName(fl.name))then
    ls = ls & fl.name & vbtab & length & vbCrLf & chr(10)

        end if
    Next
    Set tf = fsObj.OpenTextFile("index.txt", 2, True, False)

    tf.Writeline ls

    tf.Close
    Set fsObj = Nothing

    function arrayContains (arr, val)            
        dim found
        found = false
        for i = 0 to ubound(arr)
            if arr(i) = val then    
                found = true
                exit for 
            end if
        next
        arrayContains = found            
    end function
我试图得到文件名和长度,一旦我能得到,我可以添加其他

据我所知,我需要指定objFolder.ParseName(文件名)。如何指定与文件类型数组匹配的所有文件?我试过fl.name和fd.file。我不知道还能尝试什么

我通过在Windows7中双击windows资源管理器中的vbs文件来运行脚本


脚本运行时没有错误,并返回文件名,但不返回扩展属性。任何帮助都将不胜感激。

以下代码能够获得mp4文件的名称、大小、长度、帧高和帧宽等详细信息。对于flv、avi、mkv格式的文件,只能提取其名称和大小。对于这些文件,即使右键单击它们,选择“属性”并转到“详细信息”选项卡,也不会看到有关其长度、高度和宽度的信息。但是对于mp4,您可以看到所有这些细节

请尝试以下代码:

Set fso = CreateObject("scripting.filesystemobject")
Set obs = CreateObject("shell.application")
Set fol = fso.GetFolder(".")
Set spl = obs.NameSpace(fol.Path)
Set files = fol.Files
filePath = fol.path&"\Info.txt"
set objFile = fso.openTextFile(filePath,2,true,true)

arr = Array("mp4", "mkv", "avi", "flv")

For Each file In files
    ext = fso.GetExtensionName(file.Name)
    For Each ex In arr
        If StrComp(ext,ex,1)=0 Then
            objFile.writeline "NAME: "&spl.GetDetailsOf(spl.ParseName(file.Name),0)&vbcrlf&_
                              "SIZE: "&spl.GetDetailsOf(spl.ParseName(file.Name),1)&vbcrlf&_
                              "LENGTH: "&spl.GetDetailsOf(spl.ParseName(file.Name),27)&vbcrlf&_
                              "FRAME HEIGHT: "&spl.GetDetailsOf(spl.ParseName(file.Name),283)&vbcrlf&_
                              "FRAME WIDTH: "&spl.GetDetailsOf(spl.ParseName(file.Name),285)&vbcrlf&string(50,"==")
            Exit For
        End If  
    Next

Next
objFile.Close
set objFile = Nothing
set files = nothing
set spl = nothing
set fol = nothing
set obs = nothing
set fso = nothing

首先,从错误恢复下一步时的语句中删除
,重新执行此脚本,并告诉我们到目前为止您的错误是什么?我这样做了,并且第40行char 5权限被拒绝。我在我的系统上尝试了一些代码,它可以工作,但仅适用于mp4文件。对于flv、avi、mkv,我只能检索它们的大小(但不能检索长度、帧高度和宽度)。如果你愿意,我可以和你分享代码。这太棒了。要让它写入文件会很难吗?对不起,我是vbs新手。@SimoneM我已经更新了代码。现在,所有信息都将写入同一个文件夹中名为“Info.txt”的文本文件,这几乎是完美的。我一直在玩它,我想要的另一个特性是比特率。作为一个快速测试,我将283帧高更改为28,但出现了一个错误:无效的过程调用或参数。对不起,我的错误我一定是把283更改为28时弄糟了,因为它现在工作正常。你是个救生员。我已经试了一个星期了。再次感谢你!!!!!!只要使用该属性。