我需要VB脚本来删除不必要的/不需要的文件(具有不同的扩展名,但文件的姓氏是常见的,如ABC123DEF.pdf,ABC456DEF.pdf,QWE145_source.xml,QWE784_source.xml等)文件夹
任何人都可以帮忙吗
提前致谢
答案 0 :(得分:0)
从遍历文件夹树的骨架脚本开始:
Step00.vbs:
Option Explicit
Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")
WScript.Quit Main()
Function Main()
Dim sDir : sDir = "..\test"
Dim oWorker : Set oWorker = New cWorker
Main = traverseDir(goFS.GetFolder(sDir), oWorker)
End Function
Class cWorker
Public Sub processFile(oFile)
WScript.Echo oFile.Path
End Sub
End Class
Function traverseDir(oDir, oWorker)
traverseDir = 0
Dim oF
For Each oF In oDir.Files
oWorker.processFile oF
Next
For Each oF In oDir.SubFolders
traverseDir = traverseDir(oF, oWorker)
Next
End Function
输出:
cscript step00.vbs
E:\trials\SoTrials\answers\13415663\test\13415663.notes
E:\trials\SoTrials\answers\13415663\test\13415663.kpf
E:\trials\SoTrials\answers\13415663\test\13415663-UE15.prj
E:\trials\SoTrials\answers\13415663\test\vbs\step00.vbs
Main函数将文件夹和worker传递给traverseDir函数 并返回要传递给调用者(OS)的退出代码。 traverseDir 函数将目录中的每个文件发送到worker的processFile子调用 本身递归地为每个子文件夹,并返回一个错误代码 调用者(主要/以前的实例)。 (琐碎的)工人只是回声 文件的路径。
Step01.vbs使用具有硬编码条件的worker来确定哪个 要删除的文件:
Class cWorker
Public Sub processFile(oFile)
If "notes" = goFS.GetExtensionName(oFile.Name) Then
WScript.Echo "will delete", oFile.Path
oFile.Delete
End If
End Sub
End Class
输出:
cscript step01.vbs
will delete E:\trials\SoTrials\answers\13415663\test\13415663.notes
基于此概念证明脚本,您可以增强traverseDir功能 (对于无法访问的文件夹的错误处理,...)和/或cWorker类(更多 复杂条件,错误处理,记录,......)。
<强>更新强>
请参阅this recursive folder access script以获取进一步增强骨架的想法。