プログラミング基礎知識

Windows のフォルダ構成を画面表示する VBScript サンプル

Windows のフォルダ構成を画面表示する VBScript サンプルプログラム

Windows の特定のフォルダ配下にあるサブフォルダの中で…一体どのフォルダがディスク容量を食っているのか?(占有しているのか?)を疑問に思うことがあります。そんな場合に VBScript で簡単な *.vbs ファイルを作成し、そのフォルダを特定できると便利な場合があります。

※ファイルエクスプローラで並べ替えができるのは、特定のフォルダ直下のファイル/フォルダのみになりますので、簡単に実現できないのです、、

そんなサンプルプログラムをご紹介いたします。

FileSystemObject

GetFolder 関数

FileSystemObject オブジェクトを生成し、その中の GetFolder メソッドを実行すると、そのフォルダ配下のサブフォルダ情報をフォルダオブジェクトとして取得することができます。

このフォルダオブジェクトは For Each を使って一つずつサブフォルダ情報を参照することができます。

例えば “c:\hogehoge\” 配下のサブフォルダを取得するサンプルプログラムは、こんな感じになります…

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("c:\hogehoge\")

For Each objSubFolder in objFolder.SubFolders
	(処理A)
Next

Set objFolder = Nothing
Set objFSO = Nothing

このサンプルプログラムで、4行目に取得したサブフォルダの中に “.”“..” が含まれますが、これらは特殊なフォルダなので除外することにします。

その他のフォルダは一般的なフォルダと思われますので、その配下にあるフォルダを取得するために再度 GetFolder() したい訳ですが…その取得結果の配下のフォルダもさらに…と繰り返し処理しなければなりません。こうした処理を「再帰検索」と呼ぶのですが、今回は この「再帰検索」を使ったプログラムに対応していく必要があります。

再帰検索

上記のサンプルプログラムを “getDir” という関数にして、取得結果のディレクトリ内をさらに “getDir”(再帰検索)するサンプルプログラムは こんな感じになります…

Call getDir("c:\hogehoge\")

Function getDir(strDir)

	Set objFSO = CreateObject("Scripting.FileSystemObject")
	Set objFolder = objFSO.GetFolder(strDir)

	For Each objSubFolder in objFolder.SubFolders
		If objSubFolder.name <> "." And objSubFolder.name <> ".." Then
			MsgBox strDir & objSubFolder.name & "\"
			'再帰検索する
			Call getDir(strDir & objSubFolder.name & "\")
		End If
	Next

	Set objFolder = Nothing
	Set objFSO = Nothing

End Function

Windows で実行する

このサンプルプログラムを “*.vbs” としてファイルに保存し、ダブルクリックして実行すると1行目で指定した “c:\hogehoge\” 等の配下のサブフォルダ一覧を 10行目の MsgBox 関数で画面表示させることができます。

【注意】一つ一つのフォルダに対してメッセージボックスが表示されますので “c:\” などを指定して実行しないように気を付けてください。

プログラミング相談受付中

自営エンジニア歴 20年以上の 当ブログ作者が、プログラミングに関するオンライン相談(zoom 等)を受付中です。言語は HTML CSS JavaScript jQuery PHP MySQL VBScript など…

詳細・お問い合わせはこちら