2012-11-16 63 views
0

我需要VB腳本來刪除不必要/不需要的文件(具有不同的擴展名,但文件的姓氏是常見的,如ABC123DEF.pdf,ABC456DEF.pdf,QWE145_source.xml,QWE784_source從子文件夾中的.xml等)VB腳本刪除文件的子文件夾

任何人都可以在這個

感謝幫助提前

+1

我們不會做你的工作。你有什麼試過的?有什麼麻煩?哪裏?讓我們看看你的努力。 – jlvaquero

回答

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 

主函數傳遞一個文件夾和一個工人到traverseDir函數 ,並返回到被傳遞給調用者(OS)的退出代碼。遍歷目錄 函數將目錄中的每個文件發送到worker的processFile子文件,爲每個子文件夾遞歸地調用 ,並將錯誤代碼返回給調用者(主/自身的前一個實例)。的(簡單)的工人只是回聲 該文件的路徑。

Step01.vbs使用工作用硬編碼的條件,以確定哪些 要刪除的文件:

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獲得思想爲骨架的進一步增強。

相關問題