September 07, 2016
フォルダサイズ取得ツールを作ってみた
ファイル共有しているPCがある。
いろんな部署が共有フォルダを作っているのだが、どのくらい容量食ってるのか?
ショボいPCでディスク容量少ないけど、今空き容量どのくらいなのか?
ってのを監視しようとフリーウェアを探してみる。
けど、だいたいそのPCに行ってソフトを起動して確認するようなものばかり。
共有フォルダに自動で結果を出力してくれれば自分のPCから確認できるんだが。
で、結局自分でコードを書いちゃった。
機能としては、
指定したドライブの容量と空き容量を表示。
指定したフォルダの容量をリストで表示。(複数指定可)
結果はHTMLファイルでグラフ付きで出力。
と、シンプルなもの。
欲しい方はどうぞ。
ダウンロードはコチラ。
Windows用です。VB2008で書いてます。たぶんVBランタイムがいるんじゃないかと。
適当にサクっと作ったのでエラー対策処理とかスカスカです。すみません。
■設定方法
FolderSize.exeと同じ場所にあるFolderSize.iniを編集する。
[common]
pc=PC01
↑ ここにPC名(表示に使用するだけ)。
[folder]
name=ドロップボックス<>ワンドライブ<>ワーク
↑ ここにフォルダ名(結果一覧表示に使用するだけ)区切り文字は『<>』で。
folder=D:\Dropbox<>D:\OneDrive<>D:\Work
↑ ここにサイズを知りたいフォルダのパス。区切り文字は『<>』で。
nameとfolderが対になる
drive=D
↑ 容量と空き容量を調べたいドライブ名。
[result]
file=D:\results.html
↑ 出力結果ファイルのフルパス。
FolderSize.exeをタスクスケジューラで毎朝自動起動させるなどして実行する。
■サンプルコード
とりあえずフォルダ容量を取得する関数のサンプルです。
見よう見まねで書いてみたけど。
この関数に調べたいフォルダのパスをセットして呼んでください。
サイズがでかいと結構時間がかかります。
●呼び方
FolderSize = GetDirectorySize("D:\Dropbox")
●サイズを計算する関数
Public Function GetDirectorySize(ByVal FolderName As String) As Long
Dim Folder As New IO.DirectoryInfo(FolderName)
Dim oFolder As IO.DirectoryInfo
Dim oFile As IO.FileInfo
Dim TotalSize As Long
If Folder.Exists = False Then
Return -1
Exit Function
End If
For Each oFile In Folder.GetFiles()
TotalSize = TotalSize + oFile.Length
Next
For Each oFolder In Folder.GetDirectories()
TotalSize = TotalSize + GetDirectorySize(oFolder.FullName)
Next
Return TotalSize
End Function
参考になれば幸いです。
![]() ひと目でわかるVisual Basic 2013/2012 アプリケーション開発入門【電子書籍】[ 池谷京子 ] |