【发布时间】:2016-11-23 17:09:27
【问题描述】:
我一直致力于以下 VBS。这将搜索父文件夹和所有子/子文件夹并打印具有提供的扩展名(doc、docx、msg、ppt、txt)的任何文件,并提出以下内容。我是 VBS 的新手,但我想将文件扩展名定义为 IGNORE,列出所有其他文件。我有每个文件类型的目录列表工作,但我不想为每个文件类型设置 NEXT。我能够使用顶部的 代码来显示所有与扩展名不匹配的文件:
If objFSO.GetExtensionName(strFileName) <> "jpg" then
但这在下部不起作用:
if LCase(InStr(1,Files, "jpg")) > 1 then Wscript.Echo Files
我还希望能够定义多种文件类型;喜欢
If objFSO.GetExtensionName(strFileName) <> "jpg" OR "jpeg" OR "tiff"
最后我需要输出到文本文件,而不是 Windows 脚本消息框。
有人可以帮忙吗?很抱歉有错别字或混淆,英语不是我的母语。
Dim fso
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set FSO = WScript.CreateObject("Scripting.Filesystemobject")
Set f = fso.CreateTextFile("C:\temp\output.txt", 2)
objStartFolder = "C:\Test"
Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files
For Each objFile in colFiles
strFileName = objFile.Name
If objFSO.GetExtensionName(strFileName) = "x937" then
Wscript.Echo objFile.Name
End If
Next
For Each objFile in colFiles
strFileName = objFile.Name
If objFSO.GetExtensionName(strFileName) = "docx" then
Wscript.Echo objFile.Name
End If
Next
For Each objFile in colFiles
strFileName = objFile.Name
If objFSO.GetExtensionName(strFileName) = "doc" then
Wscript.Echo objFile.Name
End If
Next
For Each objFile in colFiles
strFileName = objFile.Name
If objFSO.GetExtensionName(strFileName) = "txt" then
Wscript.Echo objFile.Name
End If
Next
For Each objFile in colFiles
strFileName = objFile.Name
If objFSO.GetExtensionName(strFileName) = "msg" 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, "msg")) > 1 then Wscript.Echo Files
next
ShowSubFolders Subfolder
Next
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, "txt")) > 1 then Wscript.Echo Files
next
ShowSubFolders Subfolder
Next
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, "ppt")) > 1 then Wscript.Echo Files
next
ShowSubFolders Subfolder
Next
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, "xls")) > 1 then Wscript.Echo Files
next
ShowSubFolders Subfolder
Next
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, "doc")) > 1 then Wscript.Echo Files
next
ShowSubFolders Subfolder
Next
End Sub
【问题讨论】:
-
但这在下部不起作用:
if LCase(InStr(1,Files, "jpg")) > 1 then Wscript.Echo Files我相信这是因为Files是一个完整的对象,而你只有一个@它的 987654327@ 属性,所以你应该用Files.Name替换它
标签: vbscript