Vbscript列出文件夹和子文件夹中的所有PDF文件

Joh*_*ohn 15 directory vbscript directory-listing subdirectory

那么这是我的代码,但我无法使用objFile.Extension过滤列表我确定这是一些愚蠢的事情

Set objFSO = CreateObject("Scripting.FileSystemObject")
objStartFolder = "C:\dev"

Set objFolder = objFSO.GetFolder(objStartFolder)
Wscript.Echo objFolder.Path

Set colFiles = objFolder.Files

For Each objFile in colFiles
If objFile.Extension = "PDF" Then
    Wscript.Echo objFile.Name
    End If
Next
Wscript.Echo

ShowSubfolders objFSO.GetFolder(objStartFolder)

Sub ShowSubFolders(Folder)
    For Each Subfolder in Folder.SubFolders
        Wscript.Echo Subfolder.Path
        Set objFolder = objFSO.GetFolder(Subfolder.Path)
        Set colFiles = objFolder.Files
        For Each objFile in colFiles
            Wscript.Echo objFile.Name
        Next
        Wscript.Echo
        ShowSubFolders Subfolder
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)

在运行时,它会返回错误

(11,1)Microsoft VBScript运行时错误:对象不支持此属性或方法:'objFile.Extension'

jve*_*zey 24

您将要在FileSystemObject对象上使用GetExtensionName方法.

Set x = CreateObject("scripting.filesystemobject")
WScript.Echo x.GetExtensionName("foo.pdf")
Run Code Online (Sandbox Code Playgroud)

在您的示例中,请尝试使用此功能

For Each objFile in colFiles
    If UCase(objFSO.GetExtensionName(objFile.name)) = "PDF" Then
        Wscript.Echo objFile.Name
    End If
Next
Run Code Online (Sandbox Code Playgroud)


Sep*_*eph 11

(对于那些从你选择的搜索引擎中偶然发现的人)

这只是递归地追踪文件夹,因此您不需要复制代码两次.OP的逻辑也是不必要的复杂.

Wscript.Echo "begin."
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objSuperFolder = objFSO.GetFolder(WScript.Arguments(0))
Call ShowSubfolders (objSuperFolder)

Wscript.Echo "end."

WScript.Quit 0

Sub ShowSubFolders(fFolder)
    Set objFolder = objFSO.GetFolder(fFolder.Path)
    Set colFiles = objFolder.Files
    For Each objFile in colFiles
        If UCase(objFSO.GetExtensionName(objFile.name)) = "PDF" Then
            Wscript.Echo objFile.Name
        End If
    Next

    For Each Subfolder in fFolder.SubFolders
        ShowSubFolders(Subfolder)
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)