フォルダの中にあるファイルの合計サイズを知りたい。
ということで、いろいろと考えた件のメモです。
まず、ルールを最初にまとめます。
アクセス権の関係で例外エラーが発生することが考えられるため、
エラーとなってしまうファイルやディレクトリについては、
0バイトとしてカウントすることにしました。
次に、検索したいフォルダですが、
他のサーバーで管理している共有フォルダを対象にします。
ただし、C$といった管理共有は除くようにします。
さて、単純にフォルダを選択して右クリックのプロパティで
サイズが….わからないんですね;
さて、どうしようかなと思ったのですが、
以外にもWindowsAPIとかで、そのような機能は見当たりませんでした。
ということで、C#で共有フォルダを探して各共有フォルダ内のサイズを
すべて足し算するプログラムを作りました。
https://gist.github.com/223n/d97ebf3b4a9c7dee8fbc02cb3bc31545
C#でも階層が深い場合に十分程度かかってしまいました。
そこで、次にほかの言語で同じようなことをやっている人が
いないものか探してみました。
ということで、最初はPowerShellでどうにかできないか試行錯誤した結果です。
コード1の方は、どうも階層が深いと正しく計算できていない様子。
暇を見て直したいと思います。
https://gist.github.com/223n/81ad1547065a6144774793cedede4c38
Ref. (コード1) tech.guitarrapc.cóm – PowerShell で フォルダの容量一覧を取得したい
その次は、Goでもどうにかできないかと調べてみると、
どうやら次のコードでできるようです。
ただ、開発環境がおかしいのか、ちゃんと実行できていません…
https://gist.github.com/223n/55ae071918dbea96c65e9eed0b69856e
Ref. stack overflow – Golang: How to get directory total size?
次に、やっぱり高速処理と言ったらCやC++ダヨネー
というかれこれ数十年ほどご無沙汰だったC++を触りました。
ただ、アクセスまわりのエラー発生時に対応しきれていません。
https://gist.github.com/223n/467ce5f2aa19c7a954b10b61be1c2f65
Ref. stack overflow – How can I find the size of all files located inside a folder?
最後に、Python3も試してみました。
https://gist.github.com/223n/2955ca7bf96ac1a796f8f6ab3ed41396
Ref. stack overflow – Calculating a directory size using Python?
もう少し、手軽に調べられる方法があればいいのですが…