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
有一个有据可查的回答你的问题,在这个网址:
在该网址中显示的答案是一种并且使用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文件
如何找出谁降低了这一点?想知道为什么。 – tnana 2016-08-28 00:10:30
谢谢约翰,做了它 但我有问题试图过滤子文件夹我没有太多的运气 – John 2010-11-18 06:21:56
你能更具体吗?你是否得到错误或其他什么? – jveazey 2010-11-19 06:51:28