ファイル名一覧をコマンドプロンプトで取得する方法|dirコマンドのオプション解説

IT系知識

はじめに

さて今回は、ディレクトリ配下にあるファイル名を取得する方法についてまとめたいと思います。

ファイルの一覧など作成する際に、逐一ファイル名をコピーしてペーストなんてしてらんないですもんね。

コマンドプロンプトを使えば簡単に取得できるので覚えておきましょう。

ちなみに本記事では、以下のようなディレクトリ構造を例として説明します。見比べながら、このコマンドを打ち込んだらこう出力されるのか~とイメージしてもらえればと思います。

C:\TEST1
│  excel1-1.xlsx
│  excel1-2.xlsx
│  ppt1-1.pptx
│  
├─test2
│  │  excel2-1.xlsx
│  │  excel2-2.xlsx
│  │  ppt2-1.pptx
│  │  
│  └─test2_sub
└─test3
    │  excel3-1.xlsx
    │  excel3-2.xlsx
    │  ppt3-1.pptx
    │  
    └─test3_sub

手順

1. コマンドプロンプトを立ち上げる

まずはコマンドプロンプトを立ち上げましょう。主な方法を2つ挙げておきます。

  • Windowsの検索窓で「コマンドプロンプト」と検索して立ち上げる
  • 「Windowsボタン」+「R」を押下し、”cmd”と打ち込んだ後、OKを押下する

立ち上げ方が分からない方は上記のどちらかを試してみてください。どちらでもOKです。

2. コマンドを打ち込む

コマンドプロンプトが立ち上がったら、以下のコマンドを打ち込みましょう。

それぞれパターンに応じてコマンドを紹介します。

<パターン①:ディレクトリ内のファイル名を取得する>

dir {ファイル名を取得したいディレクトリのパス} /b /o /a-d

「/b」はファイル名だけ表示するというオプションです。bare format(簡易表示)の”b”を取っているらしいですね。

「/o」は並び替えを指定するオプションです。orderの”o”ですね。こちらを指定すると、フォルダ→ファイルの順で名前の昇順に並びます。

「/a」は属性を指定するためのオプションで、「-d」はディレクトリ属性を除外するという意味を持ちます。これにより、「/a-d」と指定するとディレクトリ配下にあるサブディレクトリの情報を除外することができます。今回は”ファイル名だけ”を取得したいというコンセプトなのでこのようにしています。

以下例です。

dir C:\test1 /b /o /a-d

======
以下出力結果
======
excel1-1.xlsx
excel1-2.xlsx
ppt1-1.pptx

~~~
※「/a-d」を指定しない場合・・・サブディレクトリの情報も含まれる

dir C:\test1 /b /o

======
以下出力結果
======
test2
test3
excel1-1.xlsx
excel1-2.xlsx
ppt1-1.pptx

<パターン②:拡張子を指定してディレクトリ配下のファイル名を取得する>

2つ目のパターンとして、特定の拡張子を指定してファイル名を取得したい場合もあると思います(例:Excelファイルのファイル名だけ出力したい等)。その時は、以下のコマンドを打ち込みましょう。

dir {ファイル名を取得したいディレクトリのパス}\*{取得したいファイルの拡張子} /b /o /a-d

このポイントは「*」:ワイルドカードを用いるというところです。ワイルドカードはトランプのジョーカーのような存在で、すなわちどんな文字にもなりうるという意味になります。

イメージつきにくいかもしれないので、例を用いて詳しく見ていきましょう。

今回の例では、上記のように「C:\test1」配下にExcelファイルが2つあります。

この2ファイルのファイル名を取ってきたいわけですが、それぞれファイル名が「excel1-1」、「excel1-2」になっていますよね。とにかくやりたいこととしては、”ファイル名は何でもいいけど、拡張子が「.xlsx」(Excelファイル)になっているものだけ取ってきたい”ということです。

そんな時に便利に使えるのが、「*」:ワイルドカードになります。以下のように指定してあげましょう。

dir C:\test1\*.xlsx /b /o /a-d

======
以下出力結果
======
excel1-1.xlsx
excel1-2.xlsx

この意味合いとしては、まず「C:\test1」でディレクトリのパスを指定してあげています。

それだとこれまでと変わらないので、「\*.xlsx」と付け加えることで、対象のパス配下にある、”○○.xlsx”ファイルを指定しているわけですね。○○は、”excel1-1″でも、”excel1-2″でも、何でもOKです。とにかく名前は何でもいいけど、最後に.xlsxだけついているものだけ取ってきてねという意味合いになります。

もちろん、

dir C:\test1\excel*.xlsx /b /o /a-d

こちらでも出力結果は変わりません。「C:\test1」にあるファイルで、”excel〇〇.xlsx”(○○は”1-1″でも”1-2″でもOK)という名称のファイルを取得するという意味ですね。

<パターン③:サブディレクトリも含め、ディレクトリ配下の全てのファイル名を取得する>

これまでのパターンでは、ディレクトリ配下にある別のフォルダの情報は含めることができませんでした。ただ、ディレクトリ配下のフォルダも含めて全ての情報を出力させたいこともあるかもしれません。その時は、以下のコマンドを打ち込みましょう。

dir {ファイル名を取得したいディレクトリのパス} /b /s /o /a-d

サブディレクトリの情報も含めたい場合は、「/s」のオプションを指定しましょう。これがサブディレクトリの情報も含めるという意味になります。

以下例です。

dir C:\test1 /b /s /o /a-d

======
以下出力結果
======
C:\test1\excel1-1.xlsx
C:\test1\excel1-2.xlsx
C:\test1\ppt1-1.pptx
C:\test1\test2\excel2-1.xlsx
C:\test1\test2\excel2-2.xlsx
C:\test1\test2\ppt2-1.pptx
C:\test1\test3\excel3-1.xlsx
C:\test1\test3\excel3-2.xlsx
C:\test1\test3\ppt3-1.pptx

ファイル名だけでなく、ファイルのパスとして情報が出力されることに注意しましょう。

一応コマンドでファイル名だけ出力させることもできるみたいですが、今回は複雑なので割愛します。正直、結果をコピーしてメモ帳などの置換機能で余計な箇所を一括削除しちゃえば済む話ですしね。(例:ワイルドカードも使い「*\」→「」に置換するなど。※\はバックスラッシュの意味です。)

もちろんこちらも、「/b」や「/a-d」を指定せずに出力させられますので覚えておきましょう。

おまけ

オプションを指定する順番

結論、オプションを指定する順番は関係ありません

dir C:\test1 /b /s /o

dir C:\test1 /s /o /b

dir C:\test1 /o /b /s

どれにしても、結果は一緒です。

理由として、Windowsのコマンドは

  • オプションを解析
  • フラグとして保持
  • 最後にまとめて処理

という仕組みだからです。

つまり「順番が重要」なのではなく「指定されているかどうかが重要」なのです。

ただし、「/a-d」のようにセットで意味を持つものは順番を変えないように注意しましょう。「-d /a」とか指定しても、認識できないというわけですね。

「/b」を指定しない場合

「/b」:ファイル名だけ表示する(簡易表示)のオプションを指定しないと、以下の情報が表示されます。

  • 更新日時
  • <DIR>(フォルダ表示)
  • ファイルサイズ
  • ファイル名
  • 合計ファイル数
  • 合計サイズ

上記のような情報が必要であれば、「/b」を付けずにコマンドを指定しましょう。

以下例です。

dir C:\test1

======
以下出力結果
======
 ドライブ C のボリューム ラベルは Windows です
 ボリューム シリアル番号は 9045-F72F です

 C:\test1 のディレクトリ

2026/02/21  15:34    <DIR>          .
2026/02/21  15:32             8,838 excel1-1.xlsx
2026/02/21  15:32             8,838 excel1-2.xlsx
2026/02/21  15:33            33,770 ppt1-1.pptx
2026/02/21  15:35    <DIR>          test2
2026/02/21  15:36    <DIR>          test3
               3 個のファイル              51,446 バイト
               3 個のディレクトリ  623,647,817,728 バイトの空き領域

「/o」で指定できる並び替えの種類

「/o」では名前順以外にも色々指定できるようです。

指定意味
/on名前順
/osサイズ順
/od日付順
/oe拡張子順

何も指定しないと昇順になりますが、降順にしたい場合は”o”の後に「-」(マイナス)を付けます。

例:「/o-n」、「/o-s」

また、順序の組み合わせも可能です。

例:「/onde」、「/o-nde」

例えば、「/o-d」など指定して、更新が新しい順に表示するなどは実務で使えるかもしれませんね。

最後に

さて今回は、ディレクトリ配下にあるファイル名を取得する方法についてまとめました。

実務でもよく使えると思うので是非この機会に覚えておきましょう!

<パターン①:ディレクトリ内のファイル名を取得する>

dir {ファイル名を取得したいディレクトリのパス} /b /a-d

<パターン②:拡張子を指定してディレクトリ配下のファイル名を取得する>

dir {ファイル名を取得したいディレクトリのパス}\*{取得したいファイルの拡張子} /b /o /a-d

<パターン③:サブディレクトリも含め、ディレクトリ配下の全てのファイル名を取得する>

dir {ファイル名を取得したいディレクトリのパス} /b /s /o /a-d

各指定の意味は以下ですね。

指定意味
/bファイル名だけ表示する
/sサブディレクトリの情報も含める
/o並び替えを指定する
/a-dディレクトリ属性を除外する

本記事はこれにて以上になります。

他にも様々な勉強記事をまとめていますのでご覧いただけると嬉しいです!

コメント

タイトルとURLをコピーしました