フォルダの中にあるファイルの合計サイズを知りたい。

ということで、いろいろと考えた件のメモです。

まず、ルールを最初にまとめます。

アクセス権の関係で例外エラーが発生することが考えられるため、 エラーとなってしまうファイルやディレクトリについては、 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?

もう少し、手軽に調べられる方法があればいいのですが…