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'
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
(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
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
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
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
Unter dieser URL finden Sie eine gut dokumentierte Antwort auf Ihre Frage:
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.
Ü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