it-swarm.com.de

Vbscript-Liste alle PDF Dateien in Ordnern und Unterordnern

Nun, hier ist mein Code, aber ich kann die Auflistung mit objFile.Extension einfach nicht filtern. Ich bin mir sicher, dass es etwas dummes ist

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

Beim Laufen kommt es wieder mit dem Fehler

(11, 1) Laufzeitfehler von Microsoft VBScript: Objekt unterstützt dies nicht Eigenschaft oder Methode: 'objFile.Extension'

15
John

Sie möchten die GetExtensionName -Methode für das FileSystemObject-Objekt verwenden.

Set x = CreateObject("scripting.filesystemobject")
WScript.Echo x.GetExtensionName("foo.pdf")

Versuchen Sie dies in Ihrem Beispiel

For Each objFile in colFiles
    If UCase(objFSO.GetExtensionName(objFile.name)) = "PDF" Then
        Wscript.Echo objFile.Name
    End If
Next
24
jveazey

(Für diejenigen, die von Ihrer Suchmaschine darauf stoßen)

Dadurch wird der Ordner rekursiv nachverfolgt, sodass Sie Ihren Code nicht zweimal kopieren müssen. Auch die OPs-Logik ist unnötig komplex.

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
11
Seph

Bei der Dateierweiterung kann die Groß- und Kleinschreibung beachtet werden ... der Code funktioniert jedoch.

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
  strFileName = objFile.Name

  If objFSO.GetExtensionName(strFileName) = "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
4
user2574534

Vielleicht hilft OP nicht, aber hoffentlich finden andere das hilfreich:

lauf

%ComSpec% /c cd/d StartPath & dir/s/b *.pdf

shell-Objekt verwenden

StdOut enthält alle PDF -Dateien

2
tnana
Set objFSO = CreateObject("Scripting.FileSystemObject")
objStartFolder = "C:\Users\NOLA BOOTHE\My Documents\operating system"

Set objFolder = objFSO.GetFolder(objStartFolder)

Set colFiles = objFolder.Files
For Each objFile in colFiles
    Wscript.Echo objFile.Name
Next
2
Prince Boothe

Unter dieser URL finden Sie eine gut dokumentierte Antwort auf Ihre Frage:

http://blogs.technet.com/b/heyscriptingguy/archive/2005/02/18/how-can-i-list-the-files-in-a-folder-and-all-its-unterordner. aspx

Die unter dieser URL angezeigte Antwort ist ziemlich kompliziert und verwendet WMI (Windows Management Instrumentation) zum Durchlaufen von Dateien und Ordnern. Wenn Sie jedoch viel Windows verwalten, lohnt es sich, WMI zu lernen. 

Ich poste dies jetzt, falls Sie jetzt etwas brauchen. Ich glaube, ich habe früher einen auf Dateisystemobjekten basierenden Ansatz verwendet, und ich werde nach einem Beispiel suchen und es später veröffentlichen, wenn ich es finde.

Ich hoffe das ist hilfreich.

1
user235218

Überprüfen Sie diesen Code:

Set objFSO = CreateObject("Scripting.FileSystemObject") 

objStartFolder = "C:\Folder1\"

Set objFolder = objFSO.GetFolder(objStartFolder)

Set colFiles = objFolder.Files

For Each objFile in colFiles 
    strFileName = objFile.Name

    If objFSO.GetExtensionName(strFileName) = "pdf" Then 
        Wscript.Echo objFile.Name 
    End If
Next

ShowSubfolders objFSO.GetFolder(objStartFolder)

Sub ShowSubFolders(Folder)

    For Each Subfolder in Folder.SubFolders 
        Set objFolder = objFSO.GetFolder(Subfolder.Path) 
        Set colFiles = objFolder.Files 
        for each Files in colFiles 
            if LCase(InStr(1,Files, ".pdf")) > 1 then Wscript.Echo Files 
        next
        ShowSubFolders Subfolder 
    Next 
End Sub
1
Eric