複数階層にある全ファイルのリストを自動で作成する方法①(バッチファイルで情報抽出編)

batファイル コード プログラム 時短 方法

t f B! P L

ある朝、職場のネットワークハードディスクの容量がパンパンで、ヤバい💦無用なものは破棄せよ💢

ってな、指示が飛んできました…(そもそも、常にパンパン(レッドゾーン)で使い続けているのがイカンやろ…と思いつつ…)

ハードディスク内のディレクトリとファイル一覧が無いと、いちいち各ディレクトリに行って、サイズ見て削除なんてやってられん😭

と思い、バッチファイルとExcelで、手抜きでファイル一覧を作成したので、その方法をご紹介します👍

因みに、この記事では、先ずバッチファイルでの作業を整理します✨

 複数階層のファイルリストを作成するコード

長くなりそうなので、先にコード全体を示します👍
    @echo off
    set SaveDir=%~dp0
    cd /d %SaveDir%
    
    echo ----------------------------------
    echo フォルダ内のファイル抽出中
    
    dir /a:-d /s > ファイル情報.txt"

    echo Finish!!
    echo ----------------------------------
    
    pause
  

細かい内容は取り敢えず不要!とのことでしたら、以下を実行すればファイル情報が得られます!
  1. 上記コードをコピー
  2. テキストファイルに張り付けて、リストを作成したいディレクトリの一番上の階層に保存
  3. 保存したテキストファイルの拡張子を『.bat』に変更
  4. ダブルクリックで実行
これで、黒い画面(cmd)が起動し、バッチファイルと同じ階層に『ファイル情報.txt』が生成されます。

黒い画面に『Finish!!』と表示されたら、テキストファイル内にファイルリスト(ファイル情報一式)が出力されています👍️

 上記バッチファイルの作成時に考えたこと(リストに欲しい情報・機能)

作業前に、先ずはファイルリストに欲しい情報と機能について考えました。

今回の場合、ファイル名は勿論ですが、重要性、削除した際の影響度も判断したかったので、以下の情報リストに入れ込むことに!
  • ファイル名
  • 最終的な更新日時
  • ファイルサイズ
  • ファイルか保存されているディレクトリの階層

加えて、作業効率化の観点から、ファイルリストには、保存先ディレクトリに簡単アクセスするための、リンク機能必須!!

と言うことで、最低限、上記情報とリンク機能を備えたリストを作成する事にしました👍️

 dirコマンド(バッチファイル)でファイル情報抽出!

 作業フロー(バッチ→エクセル)

職場なので、フリーソフトは入れられないし、Cとかのコンパイルを出来るソフトなけりゃ、自分に知識もない

ってことで、結局、バッチファイル(cmd)とExcelで作業する事にしました。

作業のフローは、
  1. バッチファイルで情報一式を抽出 ⇒ テキストファイルに出力
  2. テキストファイルの中身をExcel表に貼り付け
  3. Excelのマクロ(VBA)を使って、ディレクトリへのリンク作成&整形
ってな感じです👍

 バッチファイル用コード(dirコマンド)の作成

『dir』コマンドは、以前の記事(↓)でもご紹介したことがありますが、ファイル名などの一覧を抽出できるコマンドです。
大量のファイル名を一気に変更する方法 (①元ファイル名一覧を簡単に作成する方法) 今回は、複数の階層のフォルダ内のファイル情報一式を抽出する必要がありますが、これもオプションの設定で『dir』コマンド で達成可能です。

 『dir』コマンドとオプション

dirコマンドの構文は、
        今いる階層> dir (ファイル名) (オプション) (ディレクトリ名)
      
ですが、私の使い方ですと、基本的に、
        今いる階層> dir (オプション)
      
だけで使うことが多いです。

このdirコマンドのみを使用しますと、

↑のように、情報の過不足が発生します💦

そこで、『オプション』を設定します。今回は、
  • /a:** オプション
  • /s オプション
を活用します。
(その他のオプションについては、コチラのサイトが個人 的には分かり易いです。)

 『/a:**』オプションの効果

『/a:**』はdirコマンドで表示される情報のうち、表示する属性(種類)を指定するオプションです。
『**』の部分で種類を指定するのですが、
  • d はディレクトリ
  • r は読み取り専用ファイル
  • a はアーカイブ
  • s はシステムファイル
  • h は隠しファイル
になります。なお、『**』の部分に『-』をつけると、指定した属性以外の表示という意味になります。

今回は、ファイルを抽出したいだけで、ディレクトリがどれだけあるかは対象では無いので、実際にコードを書く際には、
        今いる階層> dir /a:-d
      
としました。

これで、今回は不要なディレクトリの情報を排除できました。
ただ、現状では一つのディレクトリの情報しか取得できていませんorz

そこで、登場するのが『/s』オプションになります。

 『/s』オプションの効果

ハードディスク内のファイル一覧が欲しい場合、一つのディレクトリの中にある更に下の階層のディレクトリ(サブディレクトリ)も 含めてファイル情報を取得する必要があります。

で、この『/s』オプションは、"サブディレクトリも含めた全ファイル情報を表示"させるオプションになります。

先程の『/a:-d』オプションに加えて、『/s』オプション加えると、
        今いる階層> dir /a:-d /s
      
とすると…

これで、今いる階層以下の全てのディレクトリ内のファイル情報を抽出することができています👍️

 バッチファイルでテキストファイルとしてファイル情報を抽出

ココまでで、ファイル情報をコマンドプロンプトの画面に表示させることはできました☆

というこで、最終形としては既に上に掲載したコードをテキストファイルにペーストして、

このファイルと拡張子を『.bat』として、情報を抽出したいディレクトリの一番上の階層に保存して、ダブルクリック!!

そうすれば、↓のように黒い画面が表示されて、『Finish!!』と表示されたら、『ファイル情報.txt』というファイル名でファイル情報一式が抽出できます😆👍

Excelを活用して、ファイルリストを整形

こちらは近日中に記事を作成しようと思います!乞うご期待😁

まとめ

以上、この記事ではHDDなどの中に入の複数の階層を含めたファイル情報の抽出方法を整理しました。

一度バッチファイルを作り、実行してしまえば後は放置ですので、時間を確保できるようになります😆

時間できた空き時間は、コーヒータイムなり自己啓発なり息抜きなり、いい時間にして貰えればと思います👍️

Tips 【ディレクトリ・ファイル名の付け方に注意!!】
バッチファイルなどを使うようになるまでは、私も気にしていなかったのですが、時短の為にバッチファイルなどを活用するようになってから、ディレクトリやファイルの名前の付け方に注意するべき点があることに気づきました!!

それは…

スペースを入れるべきではない!!(半角でも、全角でも)

です。

どうしても入れたければ、『_』や『-』で文字を繋いだ方が良いです。
と言うのも、コード類的にはスペースが入ることで読み込めなくなること(又は、一手間加えなければいけないこと)が発生することがあるためです

『スペース問題』と呼んでいますが、これは案外、気付きにくいエラーになるので、ご注意ください😁👍️

Profile

自分の写真
Japan
茨城県で生まれ育ち、千葉県、愛知県、岐阜県を経由して、今に至る妻子持ちのオッサンです。 基本手抜きが大好きで、どうすれば定常作業の手抜きができるのか?を悶々と考え続けてます(・_・;)

このブログを検索

QooQ

Blogger