連載
» 2018年08月30日 05時00分 公開

Tech TIPS:Windowsのdirコマンドでファイル名の一覧を取得する

ファイル名の一覧を取得するには、dir /bコマンドを利用する。ファイル名あるいはフォルダ名だけを取得するには/adや/a-dオプションを併用する。サブフォルダ以下も含めてファイルを検索するにはdir /sコマンドを使う。

[打越浩幸, 島田広道,共著]
「Tech TIPS」のインデックス

連載目次

対象:Windows 7/Windows 8.1/Windows 10/Windows Server 2008 R2/Windows Server 2012/Windows Server 2012 R2/Windows Server 2016


 ファイルの整理や文書作成などのために、ファイル名やフォルダ名(ディレクトリ名)の一覧を取得して、その結果をテキストファイルにしたり、アプリに貼り付けたりしたいことがあるだろう。だが[スタート]メニューからアクセスできる検索機能(Windows 10ならCortanaの検索窓)や、エクスプローラの右上にある検索ツールでは、検索はできるものの、その結果の一覧をテキストデータにしたり、アプリに貼り付けたりすることは簡単ではない。

 このような場合は、コマンドプロンプトを起動してdirコマンドを実行し、その結果をファイルにリダイレクトしたり、クリップボードに送ったりすれば簡単にファイル名の一覧を取得できる。オプションを付ければ、ファイル名だけやフォルダ名だけを取り出すことも可能だ。本TIPSでは、その方法を紹介する。

dirコマンドでファイル/フォルダ名の一覧を表示・保存する

 ファイル名やフォルダ名の一覧を取得するには、dirコマンドを利用してその出力をファイルにリダイレクトして書き込めばよい。このときフォルダ内に不必要なファイルがあるときは、「dir *.txt」のようにワイルドカードを指定することにより、特定のファイル名や拡張子を持つファイルだけを列挙できる。なお、コマンドプロンプトやdirコマンドの基本的な使い方については、TIPS「これだけは覚えておきたいWindowsのコマンドプロンプトの使い方」を参照していただきたい。

ファイル名の一覧の表示 ファイル名の一覧の表示
ファイルやフォルダ名に一覧を表示する一番基本的なコマンドがdirコマンド。ただし上下に余分な情報が表示されている。

 だがこの例のように、単にdirを実行するだけでは上下に余分な情報(空き領域サイズなど)が含まれている。ファイル名の部分だけを取り出すには、コマンドプロンプト上でマウスを使ってテキストを選択してコピーしてもよいが、「/b」オプションを付けてファイル名だけを表示させる方が簡単だ。

ファイル名だけを表示させる ファイル名だけを表示させる
ファイル名の部分だけを表示させるには、/bオプションを付けてdirを実行する。

 ファイルの一覧を保存するには、「リダイレクト機能」を使って、結果をファイルに書き込めばよい。そのためには、「 > 」に続けて、保存したいファイル名を指定する。最初は「><ファイル名>」を付けずにファイル一覧が正しく表示されるかどうかを確認してみよう。正しい結果が得られているようならば、[F3][F7][F8]キーあるいは[↑]矢印キーを押して、直前に実行したコマンドラインを表示させる。そして今度は「><ファイル名>」を付けて出力をリダイレクトして実行し、結果を書き込めばよい。

リダイレクトで結果を保存する リダイレクトで結果を保存する
dirコマンドの結果をリダイレクトすると、テキストデータとしてファイルに保存できる。これをアプリなどで読み出せば、ファイルの一覧を取得できる。

 リダイレクト前の確認時に、出力が大量で出力結果の画面がスクロールしてしまう場合は、「/p」オプションを付けると(「dir /p *.txt」のようにする)、1画面ごとに停止するので、結果を確認しやすくなる。

結果をクリップボードにコピーする

 上の例ではdirコマンドの結果をファイルに出力しているが、いちいちファイルを経由せず、直接クリップボードに結果をコピーできた方が便利なことも多い。クリップボード経由なら、アプリを切り替えれば、すぐに[Ctrl]+[V]キーで結果を貼り付けできるからだ。

 dirコマンドの結果を直接クリップボードにコピーするには、dirコマンドに続けて「| clip」というコマンドを指定する。例えば「dir *.txt /b | clip」とする。「|(縦棒)」は「パイプ記号」と言い、直前のコマンドの実行結果を別のコマンドに渡すという機能を持つ。この場合は、dirコマンドの結果がclipコマンドに渡され、それがさらにclipコマンドによってクリップボードにコピーされる。

clipコマンドで結果をクリップボードにコピーする clipコマンドで結果をクリップボードにコピーする
コマンドの実行結果を「dir | clip」のようにしてclipコマンドに渡すと、結果がクリップボードにコピーされる。これならアプリに簡単に貼り付けることができる。

ファイルあるいはフォルダだけを列挙する

 先のdirコマンドの結果を見ると、ファイル名だけでなく、フォルダ名も含まれていることが分かる。ファイルだけを取り出すには、「/a」オプションで、表示させたい属性を指定する。例えばフォルダだけを取り出すには「dir /ad」とし(dは「directory」の略)、フォルダ以外(つまりファイル)だけを取り出すには「dir /a-d」とする。

ファイルかフォルダのいずれかだけを表示させる ファイルかフォルダのいずれかだけを表示させる
dirに/adオプションを付けるとフォルダだけが表示され、/a-dオプションを付けるとファイルだけが表示される。

フォルダツリーも含めて検索・列挙する

 ここまでは、該当フォルダにあるファイルやサブフォルダだけが対象だった。「/s」オプションを利用すると、該当フォルダ以下のフォルダも含めて検索・列挙できる。/bオプションとともに利用すると、合致するファイルのフルパス名が表示される(パス名がないと、どのフォルダにあるファイルかが分からなくなる)。

サブフォルダのファイルも列挙する サブフォルダのファイルも列挙する
dirに/sオプションを付けると、サブフォルダも検索対象となる。

複数の種類のファイル名を列挙する

 一覧を取得したいファイルの種類が複数ある場合は、単にdirコマンドの引数に複数のファイル名を並べて指定すればよい。

複数の種類の名前を列挙する 複数の種類の名前を列挙する
dirの引数には、複数のファイル名パターンを列挙できる。

 ただしこの方法では、結果はファイルの種類ごとにソートされたものになる。全ての種類を通して並べ替えたい場合は、dirコマンドの結果をsortコマンドに渡すとよい。例えば「dir *.txt *.doc *.csv *.log | sort」としたり、さらにclipコマンドに渡して「dir *.txt *.doc *.csv *.log | sort | clip」のようにしたりする。

treeコマンドでフォルダのツリー構造を表示させる

 これはdirコマンドではないが、フォルダのツリー構造を表示させるのに便利なtreeというコマンドがあるので、ここで紹介しておく。

 引数なしでtreeを実行すると、フォルダのツリー構造をビジュアルに表示してくれる(/fオプションを付けると、ファイル名も列挙する)。文書中で、フォルダの構造などを簡単に提示したい場合に使えるだろう。結果はテキスト文字だけで表示されているので、不要な部分をカットするのも簡単だ。

フォルダツリーの表示 フォルダツリーの表示
treeコマンドを使うと、フォルダの階層構造をテキスト文字だけで分かりやすく表示してくれる。テキストなので、後処理(不要な部分のカットなど)もしやすい。なお、この実行例では罫線文字が重なっていて少し見づらいが、メモ帳などにコピーすると正しく見える。また/aオプションを付けると、罫線文字ではなく、ASCII文字のみで表示される。

PowerShellを使って、検索するファイルのサイズや日付を限定する

 以上、dirコマンドを使ってファイルやフォルダ名のリスト作成する方法を紹介した。だがdirコマンドでは、ファイルサイズや日付(作成日付、更新日付、最終アクセス日付)などを条件にして検索することはできず、その点は不便だ。もしこれらの条件を指定して名前を列挙したいならPowerShellを使うとよいだろう。具体的なPowerShellのコマンドレットについては以下の記事を参照していただきたい。

■更新履歴

【2018/08/29】最新OSなどに合わせて、内容を更新しました。

【2015/02/16】結果をクリップボードにコピーする方法を追記しました。

【2014/07/25】Windows Vista/Server 2008〜Windows 8.1/Server 2012 R2に対応しました。

【2004/12/04】初版公開。


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。