空のフォルダを削除するWSH(VBScript)
Windowsの雑多な操作から解消されるたいので、WSHを勉強しはじめた。
まず、「指定したフォルダ配下の空のフォルダを削除する」スクリプトを作った。
作るときには、このサイトをかなり参考にさせてもらいました。
エクセルvba.tokyo - このウェブサイトは販売用です! - エクセルvba リソースおよび情報
使い方
※実行は自己責任でお願いします。ファイルはゴミ箱へ行かずに削除されます。
ソースコード
Option Explicit Dim objApl Dim objFolder Dim objFolderItems Dim numFolderSize Dim numFileCount Dim numFolderCount Dim targetFolder Dim completeFlag Dim returnCode numFolderSize=0 numFileCount=0 numFolderCount=0 targetFolder ="ここに削除対象とするルートフォルダをフルパスで入れる。" returnCode = MsgBox(targetFolder & " 配下の空のフォルダを削除します。"&vbCrLf & vbCrLf & "実行してよろしいですか?",vbExclamation+vbYesNo,"削除プログラム実行の確認") if returnCode =vbNo Then WScript.Quit end if Set objApl = WScript.CreateObject("Shell.Application") '空のフォルダがなくなるまで繰り返す Do completeFlag = "TRUE" Set objFolder = objApl.NameSpace(targetFolder) Set objFolderItems = objFolder.Items() '空のフォルダを削除する Call deleteFolder (objFolderItems) LOOP While completeFlag = "FALSE" WScript.Echo targetFolder & " 配下の空のフォルダを削除しました。" Set objFolderItems = Nothing Set objFolder = Nothing Set objApl = Nothing '============================================================== ' 空のフォルダを削除する '============================================================== Sub deleteFolder(tmpFolderItems) Dim objFolderItemsB Dim objItem Dim i 'フォルダ中を順番に調べる For i=0 To tmpFolderItems.Count-1 Set objItem = tmpFolderItems.Item(i) 'フォルダであれば、さらに配下を調べる If objItem.IsFolder Then 'フォルダであれば、フォルダアイテムオブジェクトを '作り、それを引数としてdeleteFolderを再帰呼び出します Set objFolderItemsB = objItem.GetFolder 'フォルダが空なら削除する If objFolderItemsB.items().Count = 0 Then Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") FSO.GetFolder(objItem.Path).Delete Set FSO = Nothing completeFlag = "FALSE" else Call deleteFolder (objFolderItemsB.Items()) end if end if Next Set objItem = Nothing Set objFolderItemsB = Nothing End Sub