VBScriptを使い、指定したフォルダおよびそのサブフォルダの中の.txtファイルをすべて削除するプログラムを紹介します。指定したフォルダのサブフォルダ、そのまたサブフォルダ……というフォルダ構造は削除せず維持します。 このプログラムを実行するには、テキスト...
VBScriptを使い、指定したフォルダおよびそのサブフォルダの中の.txtファイルをすべて削除するプログラムを紹介します。指定したフォルダのサブフォルダ、そのまたサブフォルダ……というフォルダ構造は削除せず維持します。
このプログラムを実行するには、テキストファイルに下記のソースを貼り付け、拡張子「.vbs」で保存し、保存したファイルをダブルクリックしてください。フォルダ選択画面が表示され、フォルダを選択すると実行可否を尋ねるダイアログが表示されます。非常に危険なので、ダイアログのボタンの既定値は「いいえ」にしてあります。
「はい」をクリックすると、指定したフォルダ、そのすべてのサブフォルダ、そのすべてのサブフォルダ……の中の.txtファイルがすべて削除され、終了後にメッセージ「ファイル削除が完了しました」が表示されます。このメッセージは、削除対象のファイルが全くない場合など、削除を実施していない時にも表示されます。
本ブログラムの実行結果に作者は責任を持ちません。大事なファイルがあるフォルダは絶対に指定しないでください。対象ファイルが読み取り専用属性の場合など、ファイルを削除できない場合もあります。また、大量のサブフォルダやファイルがあるフォルダを指定すると、PCがフリーズする可能性があります。
Option Explicit
Private Const TARGET_EXTENTION = "txt"
Call main
Sub main()
Dim baseFolderPath
baseFolderPath = selectForder
If baseFolderPath = "" Then
Exit Sub
End If
If MsgBox("下記のフォルダの配下、サブフォルダの配下にある「" _
& TARGET_EXTENTION & "」ファイルをすべて削除します。" _
& "ごみ箱への移動ではなく削除です。" _
& vbCrLf & "本当によろしいですか? " _
& "(この操作は取り消しできません)" _
& vbCrLf & vbCrLf & baseFolderPath _
, vbYesNo + vbCritical + vbDefaultButton2) = vbNo Then
Exit Sub
End If
Call deleteFiles(baseFolderPath)
Call MsgBox("ファイル削除が完了しました。", vbInformation)
End Sub
Private Function selectForder()
Dim objShell
Dim objFolder
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "配下の「" _
& TARGET_EXTENTION & _
"」ファイルを削除したいフォルダを選択してください。", 0)
selectForder = ""
If Not objFolder Is Nothing Then
selectForder = objFolder.Items.Item.Path
End If
Set objShell = Nothing
Set objFolder = Nothing
End Function
Private Sub deleteFiles(baseFolderPath)
Dim FSO
Dim baseFolder
Dim tempFile
Dim tempFolder
Set FSO = CreateObject("Scripting.FileSystemObject")
Set baseFolder = FSO.getFolder(baseFolderPath)
For Each tempFile In baseFolder.Files
If FSO.GetExtensionName(tempFile.Name) = TARGET_EXTENTION Then
On Error Resume Next
tempFile.Delete
On Error GoTo 0
End If
Next
For Each tempFolder In baseFolder.SubFolders
Call deleteFiles(tempFolder)
Next
Set FSO = Nothing
Set tempFile = Nothing
Set tempFolder = Nothing
End Sub
このプログラムは、「call main」を削除すると、そのままExcel VBAに貼り付けられます。
また、 「TARGET_EXTENTION = "txt"」の「"txt"」を好きな拡張子に変えることで削除対象の拡張子を変更できます。

COMMENTS