サンプルプログラム

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:\” などを指定して実行しないように気を付けてください。

POSTED COMMENT

  1. […] 別の記事「Windows のフォルダ構成を画面表示する VBScript サンプル」でご紹介しましたように、特定のフォルダ配下のサブフォルダをすべて取得するには、以下の再帰検索を使ったプログラムで取得可能です。 […]

「Dropbox がもう少しでいっぱいです」ディスク容量を空ける(増やす)方法(Windows – VBS)|ソリューションブログ へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です