サブフォルダーから不要な/不要なファイル (拡張子は異なりますが、ABC123DEF.pdf、ABC456DEF.pdf、QWE145_source.xml、QWE784_source.xml など、ファイルの姓は一般的です) を削除するための VB スクリプトが必要です。
誰でもこれを手伝ってもらえますか
前もって感謝します
サブフォルダーから不要な/不要なファイル (拡張子は異なりますが、ABC123DEF.pdf、ABC456DEF.pdf、QWE145_source.xml、QWE784_source.xml など、ファイルの姓は一般的です) を削除するための VB スクリプトが必要です。
誰でもこれを手伝ってもらえますか
前もって感謝します
フォルダー ツリーをトラバースするスケルトン スクリプトから始めます。
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 関数は、フォルダーとワーカーを traverseDir 関数に渡し、呼び出し元 (OS) に渡す終了コードを返します。traverseDir 関数は、ディレクトリ内の各ファイルをワーカーの 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 クラス (より複雑な条件、エラー処理、ログなど) を拡張できます。
アップデート:
スケルトンをさらに強化するためのアイデアを得るには、この再帰的なフォルダー アクセス スクリプトを参照してください。