Windows OSのdirコマンドでファイル名の一覧を取得する:Tech TIPS
納品データなどにファイルの一覧を含めたい場合があるだろう。その場合、いちいちエクスプローラーでファイル名をコピーするのは大変だ。そのような場合、コマンドプロンプト(Windowsターミナル)を開き、「dir /b」コマンドを利用するとよい。dirコマンドを使って、さまざまなファイル名の一覧を作成する方法を紹介しよう。
対象:Windows 10/Windows 11、Windows Server 2012/Windows Server 2012 R2/Windows Server 2016/Windows Server 2019/Windows Server 2022
ファイルの整理あるいは納品書のような文書作成などのために、ファイル名やフォルダ名(ディレクトリ名)の一覧を取得して、その結果をテキストファイルにしたり、アプリに貼り付けたりしたいことがあるだろう。
しかし、[スタート]メニュー/タスクバーからアクセスできる検索機能や、エクスプローラーの右上にある検索ツールでは、検索はできるものの、その結果の一覧をテキストデータにしたり、アプリに貼り付けたりすることは簡単ではない。
エクスプローラーでも、ファイルを選択して、ファイル名の一覧のみを取得するような機能はない。
このような場合は、コマンドプロンプトを起動して「dir」コマンドを実行し、その結果をファイルにリダイレクトしたり、クリップボードに送ったりすれば簡単にファイル名の一覧を取得できる。オプションを付ければ、ファイル名だけやフォルダ名だけを取り出すことも可能だ。本Tech TIPSでは、その方法を紹介する。
コマンドプロンプトやdirコマンドの基本的な使い方については、Tech TIPS「これだけは覚えておきたいWindowsのコマンドプロンプトの使い方」を参照していただきたい。
dirコマンドでファイル/フォルダ名の一覧を表示する
ファイル名やフォルダ名の一覧を取得するには、dirコマンドを利用してその出力をファイルにリダイレクトして書き込めばよい。このときフォルダ内に不必要なファイルがあるときは、以下のようにワイルドカードを指定することにより、特定のファイル名や拡張子を持つファイルだけを列挙できる。
dir *.txt
しかし、この例のように、単に「dir」と実行するだけでは上下に余分な情報(空き領域サイズなど)が含まれている。ファイル名の部分だけを取り出すには、「/b」オプションを付けてファイル名だけを表示させるとよい。
dir *.txt /b
dirコマンドで出力したファイル/フォルダ名の一覧をファイルに保存する
ファイルの一覧を保存するには、「リダイレクト機能」を使って、結果をファイルに書き込めばよい。そのためには、「 > 」に続けて、保存したいファイル名を指定する。
dir *.txt /b > filelist.txt
最初は「 > <ファイル名>」を付けずにファイル一覧が正しく表示されるかどうかを確認してみよう。正しい結果が得られているようならば、[F3][F7][F8]キーあるいは[↑(矢印)]キーを押して、直前に実行したコマンドラインを表示させる。そして今度は「 > <ファイル名>」を付けて出力をリダイレクトして実行し、結果を書き込めばよい。
リダイレクト前の確認時に、ファイルやフォルダが多いせいで出力結果の画面がスクロールしてしまう場合は、「/p」オプションを付けると、1画面ごとに一覧表示が一時停止するので、結果を確認しやすくなる。
dir /p *.txt
dirコマンドの結果をクリップボードにコピーする
上の例ではdirコマンドの結果をファイルに出力している。ただ、いちいちファイルを経由せず、直接クリップボードに結果をコピーできた方が便利なことも多い。クリップボード経由なら、アプリを切り替えれば、すぐに[Ctrl]+[V]キーで結果を貼り付けできるからだ。
dirコマンドの結果を直接クリップボードにコピーするには、dirコマンドに続けて「| clip」というコマンドを指定する。
dir *.txt /b | clip
「|(縦棒)」は「パイプ記号」と言い、直前のコマンドの実行結果を別のコマンドに渡すという機能を持つ。この場合は、dirコマンドの結果がclipコマンドに渡され、それがさらにclipコマンドによってクリップボードにコピーされる。
dirコマンドの結果をclipコマンドでクリップボードにコピーする
コマンドの実行結果を「dir | clip」のようにしてclipコマンドに渡すと、結果がクリップボードにコピーされる。これならアプリに簡単に貼り付けることができる。
dirコマンドでファイルあるいはフォルダだけを列挙する
先のdirコマンドの結果を見ると、ファイル名だけでなく、フォルダ名も含まれていることが分かる。ファイルだけを取り出すには、「/a」オプションで、表示させたい属性を指定する。
例えばフォルダだけを取り出すには、「/a」の直後に「directory(ディレクトリ)」を意味する「d」を指定する。
dir /ad
フォルダ以外、つまりファイルだけを取り出すには、否定を表す「-(マイナス)」を「d」の前に付ける。
dir /a-d
dirコマンドでフォルダツリーも含めて検索/列挙する
ここまでは、該当フォルダにあるファイルやサブフォルダだけが対象だった。「/s」オプションを利用すると、該当フォルダ以下のフォルダも含めて検索/列挙できる。「/b」オプションとともに利用すると、合致するファイルのフルパス名が表示される(パス名がないと、どのフォルダにあるファイルかが分からなくなる)。
dir *.txt /s /b
dirコマンドで複数の種類のファイル名を列挙する
一覧を取得したいファイルの種類が複数ある場合は、単に「dir」コマンドの引数に複数のファイル名を並べて指定すればよい。
dir *.txt *.log *.csv /b
ただしこの方法では、結果はファイルの種類ごとにソートされたものになる。全ての種類を通して並べ替えたい場合は、「dir」コマンドの結果を「sort」コマンドに渡すとよい。
dir *.txt *.log *.csv /b | sort
sortコマンドで並び替えた結果をクリップボードに渡すには、さらにパイプでclipコマンドにつなげる。
dir *.txt *.log *.csv /b | sort | clip
treeコマンドでフォルダのツリー構造を表示する
これはdirコマンドではないものの、フォルダのツリー構造を表示させるのに便利な「tree」というコマンドがあるので、ここで紹介しておく。
引数なしで「tree」を実行すると、フォルダのツリー構造をビジュアルに表示してくれる(「/f」オプションを付けると、ファイル名も列挙する)。文書中で、フォルダの構造などを簡単に提示したい場合に使えるだろう。結果はテキスト文字だけで表示されているので、不要な部分をカットするのも簡単だ。
ただ、コマンドプロンプトやWindowsターミナルのフォント設定によっては、けい線文字の表示が乱れることがある(筆者のWindows 11搭載PCだと、フォントを「MSゴシック」にしていると縦棒が消えてしまう)。フォントを「Cascadia 〜」に変えたり、Windows 10のコマンドプロンプト(コンソールホスト、conhost.exe)ではレガシコンソールに切り替えてラスターフォントを選んだりすると、正しく表示されることもある。
けい線はメモ帳などにコピーすると正しく表示されるので、リダイレクトしたりパイプでclipコマンドへ渡したりすればよいだろう。
また、「/a」オプションを付けて実行すると、けい線の代わりに「-(ハイフン)」「+(プラス)」などのASCII文字で表示されるため、けい線文字が乱れることはない。
「tree /a」でフォルダツリーの階層をASCII文字で表現する
treeコマンドでけい線文字の表示が乱れる場合は、「/a」オプションを付けて実行してみよう(バックスラッシュが円マークに化けることがあるのはイマイチだが)。
PowerShellなら、検索するファイルのサイズや日付を限定できる
以上、「dir」コマンドを使ってファイルやフォルダ名のリスト作成する方法をいくつか紹介した。ただ、「dir」コマンドでは、ファイルサイズや日付(作成日付、更新日付、最終アクセス日付)などを条件にして検索することはできず、その点は不便だ。
もし、こうした条件を指定して名前を列挙したいなら、「PowerShell」を使うとよいだろう。具体的なPowerShellのコマンドレットについては以下の記事を参照していただきたい。
■関連リンク
- dirコマンドのレファレンス(Microsoft Learn)
- clipコマンドのレファレンス(Microsoft Learn)
- sortコマンドのレファレンス(Microsoft Learn)
- treeコマンドのレファレンス(Microsoft Learn)
■関連記事
■更新履歴
【2023/08/16】スクリーンショットを追加/更新しました。
【2022/08/19】対象にWindows 11を追加しました。
【2018/08/29】最新OSなどに合わせて、内容を更新しました。
【2015/02/16】結果をクリップボードにコピーする方法を追記しました。
【2014/07/25】Windows Vista/Server 2008〜Windows 8.1/Server 2012 R2に対応しました。
【2004/12/04】初版公開。
Copyright© Digital Advantage Corp. All Rights Reserved.