フォルダー内に沢山ファイルがあり、そのファイル名を取得する方法「フォルダ内にあるファイルの一覧表を作る」を過日掲載しました。今回はそれを少し発展させてリストアップさせたファイルの合計容量が計算できるようにしたいと思います。
- 前回同様に、フォルダー[DATA]の中でdirすると、下図のような結果になる。
- ここからは、前回と違って「すべてのファイル」ではなく、ワードの文書ファイルのみのリストを作ってみる。
- さらに今回は、[DATA]フォルダの中にある[Download]フォルダにもファイルが存在する。
- さて、ワード文書はDATAフォルダに3つ、その下のDownloadフォルダに1つ有ることが前もって分かった。
- ここまで来たらこのデータを加工してエクセルに読ませられたら・・・と考える。
- さらに工夫をしてみよう。勉強のため List2.txt を少し加工する。
- 次のようなコマンドラインを入力する。List2.txt を使用
- では、大文字小文字を区別せずに検索できないかと考える。List2.txt でやり直し
- 次はこのような余分な行を消すことにしよう。List3.txt を使用
- 最後の手順として List4.txt をエクセルからインポートする。
復習すると、プロンプト[D:¥DATA>]は、Dドライブの中の[DATA]というフォルダーの中にいることを示す。つまり、そこでdirとするということは[DATA]の中にあるファイルやフォルダの一覧を表示すると言うことになる。
エクセルファイルが2個、ワードファイルが3個である。その他に[Download]というフォルダーがある。
上のコマンドの意味は、「ファイル名は何でもいい(*)が拡張子(ワードには.docがエクセルには.xlsが後ろに付く)はdocであるファイル一覧を List1.txt の中に書き出しなさい」である。
その結果が下のようになる。(List1.txtをマウスでダブルクリックする)合計約92Kバイト
このファイル指定でOffice2007以降のDOCXも検索される
ボリューム シリアル番号は 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 バイトの空き領域
折角なのでコマンドで確かめてみよう。
[Download]は[DATA]のすぐ下にあるフォルダなので、download の中を表示せよと言う命令になる。もちろん後ろに何も付いていないので画面にということになる。
では一度でそのすべて(4つ)のファイルを同時に表示するにはどうしたらよいのだろう。つまり、いろんなフォルダにワード文書がばらばらに入っているときそのすべてを探し出して全容量を表示すると言うことである。
ここでは、赤色で示した「/s」(「/S」でも良い)がポイントとなる。このS は「Sub Directory」の意味で今いるところ[DATA]より下層のフォルダ全部という意味になる。合計約133Kバイト
ボリューム シリアル番号は 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 バイトの空き領域
エクセルのインポートファイル形式にはコンマ・セパレーティド・バリュー(CSV)とスペースやTAB区切りのものとがある。
上の 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
つまり、ファイル一覧以外のすべての文字を消すのである。この例題ぐらいならメモ帳で編集すればよいが、何万個とある場合は論外である。
ボリューム シリアル番号は 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 を使用する。
「find」というコマンドは指定したファイル(複数可)の中から、指定した文字列を検索するというものである。すなわち Lilst2.txt の中から「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
結果4行有ったものが3行にに減ってしまった。原因は無くなったファイルの拡張子が大文字の「DOC」だからである。
その結果は・・・・、
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」を含む行が検索されてしまった。でも、これは、仕方がない。
その結果は・・・・、最終データファイルList4.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」の意味は、指定した文字列を含まない行を表示するである。このように余分な行がたくさんあったらその行特有の文字列を指定して「含まない」という検索をすればだんだんふるいに掛けられる。 ファイル内上部に数行不要な(どのファイルから生成したかの履歴)行が発生するがこれくらいはメモ帳で消す。
まず、[データ]→[外部データの取り込み]→[テキストファイル]を順に選択し、ファイルの選択ボックスで「List4.txt」をダブルクリックする。
自動的に「スペース区切り」の方法が選択されているのでそのまま[完了]をクリック。
どのセルから貼り付けるか聞かれるのでそのまま[OK]すると、図のようにインポートが完了する。何万行有っても同じである。
後は、エクセルの多くの機能で加工分析が可能となる。