- AquaNet IT Business - https://todo.vc/aquanet -

フォルダー内にあるファイルの容量を合計する

excel

 フォルダー内に沢山ファイルがあり、そのファイル名を取得する方法「フォルダ内にあるファイルの一覧表を作る」を過日掲載しました。今回はそれを少し発展させてリストアップさせたファイルの合計容量が計算できるようにしたいと思います。


  1. 前回同様に、フォルダー[DATA]の中でdirすると、下図のような結果になる。
  2. D:¥DATA>dir[Enter]

    復習すると、プロンプト[D:¥DATA>]は、Dドライブの中の[DATA]というフォルダーの中にいることを示す。つまり、そこでdirとするということは[DATA]の中にあるファイルやフォルダの一覧を表示すると言うことになる。



    エクセルファイルが2個、ワードファイルが3個である。その他に[Download]というフォルダーがある。

  3. ここからは、前回と違って「すべてのファイル」ではなく、ワードの文書ファイルのみのリストを作ってみる。
  4. D:¥DATA>dir *.doc > List1.txt[Enter]

    上のコマンドの意味は、「ファイル名は何でもいい(*)が拡張子(ワードには.docがエクセルには.xlsが後ろに付く)はdocであるファイル一覧を List1.txt の中に書き出しなさい」である。
    その結果が下のようになる。(List1.txtをマウスでダブルクリックする)合計約92Kバイト
    このファイル指定でOffice2007以降のDOCXも検索される

     ドライブ D のボリューム ラベルは ボリューム です
     ボリューム シリアル番号は XXXX-XXXX です

    D:¥DATA のディレクトリ

    2011/05/20 13:42         20,480 Word文書(a).doc
    2011/05/20 13:44         30,720 Word文書(b).doc
    2011/05/20 13:44         40,960 Word文書(c).doc
              3 個のファイル            92,160 バイト
              0 個のディレクトリ   31,647,625,216 バイトの空き領域

  5. さらに今回は、[DATA]フォルダの中にある[Download]フォルダにもファイルが存在する。
  6.  折角なのでコマンドで確かめてみよう。

    D:¥DATA>dir download[Enter]

    [Download]は[DATA]のすぐ下にあるフォルダなので、download の中を表示せよと言う命令になる。もちろん後ろに何も付いていないので画面にということになる。




  7. さて、ワード文書はDATAフォルダに3つ、その下のDownloadフォルダに1つ有ることが前もって分かった。
  8.  では一度でそのすべて(4つ)のファイルを同時に表示するにはどうしたらよいのだろう。つまり、いろんなフォルダにワード文書がばらばらに入っているときそのすべてを探し出して全容量を表示すると言うことである。

    D:¥DATA>dir *.doc /s > List2.txt[Enter]

     ここでは、赤色で示した「/s」(「/S」でも良い)がポイントとなる。このS は「Sub Directory」の意味で今いるところ[DATA]より下層のフォルダ全部という意味になる。合計約133Kバイト

     ドライブ D のボリューム ラベルは ボリューム です
     ボリューム シリアル番号は XXXX-XXXX です

    D:¥DATA のディレクトリ

    2011/05/20 13:42         20,480 Word文書(a).doc
    2011/05/20 13:44         30,720 Word文書(b).doc
    2011/05/20 13:44         40,960 Word文書(c).doc
              3 個のファイル            92,160 バイト

    D:¥DATA¥Download のディレクトリ

    2011/05/20 13:44         40,960 Word文書(d).doc
              1 個のファイル            40,960 バイト

       ファイルの総数:
              4 個のファイル          133,120 バイト
              0 個のディレクトリ   31,647,625,216 バイトの空き領域

  9. ここまで来たらこのデータを加工してエクセルに読ませられたら・・・と考える。
  10.  エクセルのインポートファイル形式にはコンマ・セパレーティド・バリュー(CSV)とスペースやTAB区切りのものとがある。
     上の List2.txt を見ると次のような加工をすればスペース区切りのデータファイルに変身することが分かる。

    2011/05/20 13:42         20,480 Word文書(a).doc
    2011/05/20 13:44         30,720 Word文書(b).doc
    2011/05/20 13:44         40,960 Word文書(c).doc
    2011/05/20 13:44         40,960 Word文書(d).doc

     つまり、ファイル一覧以外のすべての文字を消すのである。この例題ぐらいならメモ帳で編集すればよいが、何万個とある場合は論外である。

  11. さらに工夫をしてみよう。勉強のため List2.txt を少し加工する。
  12.  ドライブ D のボリューム ラベルは ボリューム です
     ボリューム シリアル番号は XXXX-XXXX です

    D:¥DATA のディレクトリ

    2011/05/20 13:42         20,480 Word文書(a).DOC
    2011/05/20 13:44         30,720 Word文書(b).doc
    2011/05/20 13:44         40,960 Word文書(c).doc
              3 個のファイル            92,160 バイト

    D:¥DATA¥DownloadDoc のディレクトリ

    2011/05/20 13:44         40,960 Word文書(d).doc
              1 個のファイル            40,960 バイト

       ファイルの総数:
              4 個のファイル          133,120 バイト
              0 個のディレクトリ   31,647,625,216 バイトの空き領域

     この赤色の意味は、拡張子が1ファイルだけ大文字であった、Download というフォルダの名前が元々DownloadDoc であったと仮定してこれからの作業を少し難しくするためである。実際にメモ帳でこのように修正した List2.txt を使用する。

  13. 次のようなコマンドラインを入力する。List2.txt を使用
  14. D:¥DATA>find “doc” List2.txt > List3.txt[Enter]

     「find」というコマンドは指定したファイル(複数可)の中から、指定した文字列を検索するというものである。すなわち Lilst2.txt の中から「doc」と言う文字列を含んでいる行を表示する。

    ——— LIST2.TXT
    2011/05/20 13:44         30,720 Word文書(b).doc
    2011/05/20 13:44         40,960 Word文書(c).doc
    2011/05/20 13:44         40,960 Word文書(d).doc

     結果4行有ったものが3行にに減ってしまった。原因は無くなったファイルの拡張子が大文字の「DOC」だからである。

  15. では、大文字小文字を区別せずに検索できないかと考える。List2.txt でやり直し
  16. D:¥DATA>find /I “doc” List2.txt > List3.txt[Enter]

     その結果は・・・・、

    ——— LIST2.TXT
    2011/05/20 13:42         20,480 Word文書(a).DOC
    2011/05/20 13:44         30,720 Word文書(b).doc
    2011/05/20 13:44         40,960 Word文書(c).doc
    D:¥DATA¥DownloadDoc のディレクトリ
    2011/05/20 13:44         40,960 Word文書(d).doc

     折角省かれていた「DownloadDoc」を含む行が検索されてしまった。でも、これは、仕方がない。

  17. 次はこのような余分な行を消すことにしよう。List3.txt を使用
  18. D:¥DATA>find /I /V “D:¥DATA” List3.txt > List4.txt[Enter]

     その結果は・・・・、最終データファイルList4.txt

    ——— LIST3.TXT

    ——— LIST2.TXT
    2011/05/20 13:42         20,480 Word文書(a).DOC
    2011/05/20 13:44         30,720 Word文書(b).doc
    2011/05/20 13:44         40,960 Word文書(c).doc
    2011/05/20 13:44         40,960 Word文書(d).doc

    「/V」の意味は、指定した文字列を含まない行を表示するである。このように余分な行がたくさんあったらその行特有の文字列を指定して「含まない」という検索をすればだんだんふるいに掛けられる。 ファイル内上部に数行不要な(どのファイルから生成したかの履歴)行が発生するがこれくらいはメモ帳で消す

  19. 最後の手順として List4.txt をエクセルからインポートする。
  20.  

     まず、[データ]→[外部データの取り込み]→[テキストファイル]を順に選択し、ファイルの選択ボックスで「List4.txt」をダブルクリックする。



     自動的に「スペース区切り」の方法が選択されているのでそのまま[完了]をクリック。



     どのセルから貼り付けるか聞かれるのでそのまま[OK]すると、図のようにインポートが完了する。何万行有っても同じである。
    後は、エクセルの多くの機能で加工分析が可能となる。