Vbscript enumera todos los archivos PDF en la carpeta y subcarpetas
folder subfolder (7)
Bueno, aquí está mi código, pero simplemente no puedo filtrar el listado usando objFile.Extension, estoy seguro de que es algo tonto
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
En funcionamiento, vuelve con el error
(11, 1) Error de tiempo de ejecución de Microsoft VBScript: el objeto no admite esta propiedad o método: ''objFile.Extension''
Querrá utilizar el método GetExtensionName en el objeto FileSystemObject.
Set x = CreateObject("scripting.filesystemobject")
WScript.Echo x.GetExtensionName("foo.pdf")
En tu ejemplo, intenta usar esto
For Each objFile in colFiles
If UCase(objFSO.GetExtensionName(objFile.name)) = "PDF" Then
Wscript.Echo objFile.Name
End If
Next
Hay una respuesta bien documentada a su pregunta en esta url:
La respuesta que se muestra en esa URL es algo complicada y utiliza WMI (Windows Management Instrumentation) para recorrer los archivos y las carpetas. Pero si hace mucha administración de Windows, vale la pena el esfuerzo para aprender WMI.
Estoy publicando esto ahora en caso de que necesite algo ahora mismo; pero creo que solía usar un enfoque basado en el sistema de archivos y voy a buscar algún ejemplo, y lo publicaré más adelante si lo encuentro.
Espero que esto sea útil.
(Para aquellos que tropiezan con esto desde su motor de búsqueda de elección)
Esto rastrea recursivamente la carpeta, por lo que no necesita duplicar el código dos veces. Además, la lógica de OP es innecesariamente compleja.
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
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
Verifique este código:
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
La extensión de archivo puede ser mayúscula ... pero el código funciona.
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
Puede que no ayude a OP, pero esperamos que a otros les pueda resultar útil:
correr
%ComSpec% /c cd/d StartPath & dir/s/b *.pdf
usando un objeto shell
StdOut contendrá todos los archivos PDF