連載
» 2015年02月16日 05時00分 UPDATE

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

ファイル名の一覧を取得するには、dir /bコマンドを利用する。ファイル名あるいはフォルダー名だけを取得するには/adや/a-dオプションを併用する。dir /sコマンドではファイルを検索できる

[打越浩幸, 島田広道,デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象ソフトウェア:Windows XP/Windows Vista/Windows 7/Windows 8/Windows 8.1/Windows Server 2003/Windows Server 2008/Windows Server 2008 R2/Windows Server 2012/Windows Server 2012 R2



解説

 ファイルの整理やドキュメント作成などのために、ファイル名やフォルダー名(ディレクトリ名)の一覧を取得して、その結果をテキストファイルなどにしたい場合は多い。だが[スタート]メニューやスタート画面の[検索]ツールでは、検索はできるものの、その結果の一覧をファイルに出力することはできない。

 このような場合は、コマンドプロンプトを起動してdirコマンドを実行し、その結果をファイルにリダイレクトすると、簡単にファイル名の一覧を取得できる。オプションを指定すれば、ファイル名だけとかフォルダー名だけを取り出すことも可能だ。ただしdirコマンドでは、ファイルサイズや日付(作成日付、更新日付、最終アクセス日付)などを条件にして検索することはできないので、そのような高度な検索を行いたい場合は、右上の関連記事などを参照していただきたい。

操作方法

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

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

C:\WORK\TEXT>dir r* ……「r」で始まるファイル/フォルダー名を検索
ドライブ C のボリューム ラベルは NTFSVOL です
ボリューム シリアル番号は 2C40-9E3A です

C:\WORK\TEXT のディレクトリ

2004/12/02  10:21             3,086 r.txt ……ファイル名1
2004/12/02  12:53    <DIR>          Result ……フォルダー名
2004/12/02  10:26            43,948 result.txt ……ファイル名2
               2 個のファイル              47,034 バイト
               1 個のディレクトリ  10,362,789,888 バイトの空き領域



 だがこの例のように、単に「dir」を実行するだけでは上下に余分な情報(空き領域サイズなど)が含まれているので、「/b」オプションを付けてファイル名だけを取り出すとよい。

C:\WORK\TEXT>dir r* /b ……/bオプションでファイル名だけを出力
r.txt ……結果。余分な情報は表示されない
Result
result.txt

C:\WORK\TEXT>dir r* /b > \list.txt ……結果をファイルに出力



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

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

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

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

 dirコマンドの結果を直接クリップボードにコピーするには、dirコマンドに続けて「| clip」というコマンドを指定する。例えば「dir r* /b | clip」とする。「|縦棒)」は「パイプ記号」と言い、直前のコマンドの実行結果を別のコマンドに渡すという機能を持つ。この場合は、dirコマンドの結果がclipコマンドに渡され、それがさらにclipコマンドによってクリップボードにコピーされる。ただしclipコマンドはWindows Vista/Windows Server 2003以降でのみ利用できる(Windows XPでは利用できない。関連記事も参照)。

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

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

C:\WORK\TEXT>dir r* /b /a-d ……ファイル名だけを表示
r.txt ……結果
result.txt

C:\WORK\TEXT>dir r* /b /ad ……フォルダー名だけを表示
Result ……結果



●隠しファイルあるいはシステム属性ファイルだけを列挙する

 隠し(Hidden)属性やシステム(System)属性が付いたファイルやフォルダーは、通常はdirコマンドでは表示されない。これらの属性が付いたファイルを表示するには、/aオプションを使って、「dir /ah」や「dir /as」のようにすればよい。ただしこの方法だと、それぞれ隠しファイルだけ、システムファイルだけが列挙される。ファイルの種類や属性にかかわらず、全ての項目を表示させたければ、単に「dir /a」とする。

C:\>dir r* /b
ReloadedFiles ……一見では、ファイル/フォルダーはこれだけ

C:\>dir r* /b /ah ……隠し属性ファイル/フォルダーだけを表示
Recovery
release.log

C:\>dir r* /b /as ……システム属性ファイル/フォルダーだけを表示
Recovery

C:\>dir r* /b /a ……種類や属性に関係なく、全ファイル/フォルダーを表示
Recovery
release.log
ReloadedFiles



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

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

C:\WORK\TEXT>dir r* /b /a-d /s ……フォルダーツリー内も検索
C:\WORK\TEXT\r.txt
C:\WORK\TEXT\result.txt
C:\WORK\TEXT\Result\regopt.txt ……サブフォルダー内のファイルも表示される
C:\WORK\TEXT\Result\date01\reset.txt



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

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

D:\TEXT>dir *.txt *.doc *.csv *.log /b /a-d /s ……拡張子が「.txt」「.doc」「.csv」「.log」のファイルを表示
C:\WORK\TEXT\test.txt
C:\WORK\TEXT\article.doc
……(中略)……
C:\WORK\TEXT\Temp\calc.csv
C:\WORK\TEXT\Temp\report.doc
C:\WORK\TEXT\Temp\old\calc.log
……(以下略)……



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

●特定のフォルダー以下でファイルを検索する

 /sオプションはファイル検索にも活用できる。例えば「dir <フォルダー名>\<ファイル名> /s」のようにすれば、カレントフォルダーの場所に関わらず、指定したフォルダー以下を検索できる。

D:\TEXT>dir c:\windows\system32\*html* /s /b ……システムフォルダーの下を検索
c:\windows\system32\html.iec
c:\windows\system32\mshtml.dll
c:\windows\system32\mshtml.tlb
……(中略)……
c:\windows\system32\ja-JP\html.iec.mui
c:\windows\system32\ja-JP\mshtml.dll.mui
……(中略)……
c:\windows\system32\WindowsPowerShell\v1.0\Schemas\PSMaml\Maml_HTML_Style.xsl



■更新履歴

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

【2014/07/25】Windows Vista/Server 2008〜Windows 8.1/Server 2012 R2に対応しました。また隠し属性やシステム属性のファイルを列挙したり、複数の種類のファイルをまとめて列挙したりする方法を追記しました。

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


「Tech TIPS」のインデックス

Tech TIPS

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

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

メールマガジン登録

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