VBSCRIPT列表文件夹中的所有PDF文件和子文件夹

问题描述:

那么这里是我的代码,但我只是不能使用objFile.Extension筛选上市我相信这是一些无聊的事情VBSCRIPT列表文件夹中的所有PDF文件和子文件夹

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 

上运行它回来与错误

(11, 1) Microsoft VBScript runtime error: Object doesn't support this property or method: 'objFile.Extension'

你会想在FileSystemObject对象上使用GetExtensionName方法。

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

在你的榜样,请尝试使用此

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

谢谢约翰,做了它 但我有问题试图过滤子文件夹我没有太多的运气 – John 2010-11-18 06:21:56

+1

你能更具体吗?你是否得到错误或其他什么? – jveazey 2010-11-19 06:51:28

有一个有据可查的回答你的问题,在这个网址:

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

在该网址中显示的答案是一种并且使用WMI(Windows Management Instrumentation)来遍历文件和文件夹。但是如果你做了很多Windows管理,那么学习WMI是值得的。

我现在发布此信息以防万一您需要某些东西;但我认为我曾经使用基于文件系统对象的方法,我会寻找一些例子,如果我找到它,我会稍后发布。

我希望这是有帮助的。

(对于那些谁从您选择的搜索引擎在中国原创)

这只是追溯递归下降的文件夹,这样你就不会需要两次复制你的代码。 OPs逻辑也是不必要的复杂。

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 

文件扩展名可能是区分sentive ...但代码工作。

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 

检查这个代码:

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 

可能无法帮助OP,但希望其他人可能会有所帮助:使用shell对象

运行

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

StdOut wi将包含所有的PDF文件

+0

如何找出谁降低了这一点?想知道为什么。 – tnana 2016-08-28 00:10:30