まさか、エクスプローラーで一つ一つ容量を確認するなんてかったるいので
簡単なスクリプトを組むことに
取り敢えず一階層におけるフォルダーの列挙ととサイズの表示すればいいかというわけで
fo=inputbox("folder path")
with createobject("scripting.filesystemobject")
for each fos in .getfolder(fo).subfolders
wsh.echo fos.name & " : " & fos.size
if err.number then wsh.echo fos.name & " : " & "err"
next
end with
適当なフォルダーでテストして問題事を確認して、いざC配下でCscriptで実行
「書き込みできません」
getfolderのsizeで「書き込みできません」どういうことだ・・・。
— 黒い野良猫 (@black_stray_cat) 2015, 2月 22
ん?んんん?コードに間違えはない。
じゃぁ、どこでこけているのか調べる事に
fo=inputbox("folder path")
with createobject("scripting.filesystemobject")
for each fos in .getfolder(fo).subfolders
On Error Resume Next
wsh.echo fos.name & " : " & fos.size
if err.number then wsh.echo fos.name & " : " & "err"
On Error goto 0
next
end with
googleフォルダーに弾かれる・・・ぐぬぬ
— 黒い野良猫 (@black_stray_cat) 2015, 2月 22
先ずは「google」フォルダーこれはどうやら配下の「CrashReports」フォルダーにアクセス権限が無かったことが問題らしい。
でもこれエクスプローラーでは容量でるのになんでfilesystemobjectじゃ駄目なんだろうか・・・
いやまぁこれは(あまり納得できないけども)権限の永続許可で解決したので良いとして
「google」フォルダー内の「CrashReports」フォルダーにアクセス権限を与えたら取得できるようになった。まぁそれはそれで納得できるけど、じゃぁエクスプローラーはどういうプロセスで容量ひっぱってきてるんだろうか?
— 黒い野良猫 (@black_stray_cat) 2015, 2月 22
Windows NT」フォルダーもダメだわ・・・
— 黒い野良猫 (@black_stray_cat) 2015, 2月 22
subfoldersで列挙すると「アクセサリ」が駄目らしい。直接エクスプローラーに居れたら「アクセスが拒否されました」で弾かれた。んー?
— 黒い野良猫 (@black_stray_cat) 2015, 2月 22
次に「Windows NT」フォルダーでこけました。中に入ってさらにsubfolderでリストを出力してみると「アクセサリ」というフォルダーに弾かれているらしい。
エクスプローラーからアドレス直打ちしてみたところ弾かれた。
どれもこれもアクセスが拒否される。という事で調べてみたところ
以下記事が見つかった
カテゴリ「Visual Studio Express Editions > Visual C# Express Edition」
タイトル「ファイル検索プログラム作成でアクセス拒否」
ここに出てくる「earch.txt」のリストと会話の流れで「リパース ポイント」が原因なのがわかりました。
リパース ポイントってシンボリックリンクみたいなものかな???
— 黒い野良猫 (@black_stray_cat) 2015, 2月 22
普通一般家庭じゃwindowsしか使ってないだろうから
シンボリックリンクの方は知っているって方が珍しいかもしれないけどまぁシンボリックリンクのほうは知ってたのでこんなツイートに
シンボリックリンクの方は知っているって方が珍しいかもしれないけどまぁシンボリックリンクのほうは知ってたのでこんなツイートに
リパース ポイントが曲者過ぎる。リパース ポイントが含まれる上位フォルダは全て容量計算が弾かれることになる・・・。
— 黒い野良猫 (@black_stray_cat) 2015, 2月 22
まぁ、そして今に至るわけです。
とにかく解決するのであれば、一階層でサイズが取得できなかった場合下のフォルダへ入って行って延々と再帰でフォルダーの容量を漁るればいい。
たーだー、容量をちょっと確認したいだけなのに面倒すぎる。
エクスプローラーはだって容量見れるじゃないか・・・ぐぬぬ←今ここ
とにかく解決するのであれば、一階層でサイズが取得できなかった場合下のフォルダへ入って行って延々と再帰でフォルダーの容量を漁るればいい。
たーだー、容量をちょっと確認したいだけなのに面倒すぎる。
エクスプローラーはだって容量見れるじゃないか・・・ぐぬぬ←今ここ