ファイルの一覧を取得する

カレントディレクトリにあるファイルやサブディレクトリの一覧をdirコマンドで得ることができます。バッチ処理ではなく、コマンドプロンプトを開いて直接入力する場合でも、カレントディレクトリ内にあるファイルを調べるためにdirコマンドを使うことがあるでしょう。もっとも簡単なdirコマンドは、パラメータを受け取りません。

dir

これを実行すると、カレントディレクトリ内のファイルやディレクトリの一覧が出力されます。

図 03 現在のディレクトリのファイルを一覧

最初のパラメータに、ファイルの一覧を表示したいディレクトリのパスを指定することで、カレントディレクトリではない別のディレクトリの一覧を表示できます。

dir 一覧を表示するパス

一覧を表示するパスにはドライブから始まる絶対パス、またはカレントディレクトリからの相対パスを使えます。パスがディレクトリの場合はディレクトリ内のファイルやサブディレクトリを表示します。特定のファイルの場合、そのファイルだけを表示します。

図 04 指定したパスの一覧を表示

通常、上の図のようにdirコマンドで表示されるファイルの一覧には日付などファイル名以外の情報が含まれています。ディレクトリ内にあるファイルの名前を取得するなどのプログラム的な利用を目的としている場合は、他の情報はノイズとなってしまうでしょう。そこで、/Bオプションを指定することでファイル名だけを表示できます。

dir /B

一覧を表示するパスを指定する場合は、パスの後に/Bオプションを指定してください。

図 05 ファイル名だけを列挙

図05のように/Bオプションを指定することで、余分なテキストが表示されずにファイル名だけが列挙されます。

ワイルドカード

コマンドプロンプトで指定するファイル名の多くには、ワイルドカード文字を用いることで特定の名前を持つ複数のファイルを同時に指定することができます。たとえば、拡張子別にファイル処理を行いたい場合や、特定の文字列から始まるファイルだけを対象に処理したい場合などに応用できます。

ワイルドカード文字とは、任意の 1 文字を表す ? 記号と、任意の文字列を表す * 記号からなるファイル名です。

* *.txt:拡張子が txt のファイル
* master*:master から始まるファイル
* text?.txt:text1.txt や text2.txt など、text に続き任意の 1 文字のあるファイル

dirコマンドなどで指定するファイル名でワイルドカード文字を使うことで、特定のファイル名だけを列挙できるようになります。

図 06 ワイルドカード文字を用いたファイルの一覧

図06は、Windowsがインストールされているドライブのprogram filesディレクトリ内にあるmicrosoftから始まるファイルをdirコマンドで一覧したものです。このように、大量にファイルが配置されているディレクトリから目的のファイルだけを列挙するような場合にワイルドカード文字を用います。

ワイルドカード文字は、前述したcopyやmoveといったファイル制御用のコマンドでも利用できます。たとえば、特定の拡張子をもつファイルだけを move コマンドで移動させるといった応用ができます。

サンプル 08

@echo off

if not exist files mkdir files
move *.txt files

pause

実行結果

サンプル08は、カレントディレクトリ内にある拡張子がtxtのテキストファイルだけをfilesディレクトリに移動させるプログラムです。このようにワイルドカード文字を使うことで、ある規則をもった名前のファイルだけを移動させたり、コピーすることができます。バックアップ作業の自動化などに使えるでしょう。

[Microsoft TechNet コマンド ライン リファレンス]