ワイルドカード

にメンテナンス済み

ファイルを 1 つずつ指定する代わりに、*.txt のようにワイルドカードを使うと、条件に合うファイルをまとめて指定できます。dir、copy、del、ren など、多くのコマンドで使える基本テクニックです。

この記事では、* と ? の意味、コマンドごとの使い方、そして初心者がつまずきやすい注意点を解説します。

結論

記号意味例
*0 文字以上の任意の文字列*.txt(すべての txt ファイル)
?任意の 1 文字report?.txt(report1.txt、reportA.txt など)
  • ワイルドカードを展開するのはコマンド自身です。コマンドプロンプトは展開しません。
  • フォルダ名の途中(C:\Us*\Documents など)には使えません。
  • del *.doc のような削除では、意図しないファイルまで一致する場合があります。先に dir で確認しましょう。

ワイルドカードの基本

*(アスタリスク)

* は、0 文字以上の任意の文字列に一致します。

拡張子が
dir *.txt
report
dir report*
名前に
dir *log*
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>dir /b *log*
app.log
catalog.csv
login.txt
C:\users\user>

?(クエスチョンマーク)

? は、任意の 1 文字に一致します。文字数を限定したいときに便利です。

data1.csv
dir data?.csv
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>dir /b data?.csv
data1.csv
data2.csv
dataA.csv
C:\users\user>
おすすめ書籍※ 広告を含む場合があります
中小企業経営者のためのRPA入門 RPA導入を成功させる方法

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

data10.csv は ? が 1 文字分しかないため一致しません。2 文字なら data??.csv と書きます。なお、次の Info のとおり、data?.csv は data.csv にも一致します。

名前の末尾の ? について

名前部分の末尾に置いた ? は、「1 文字、または 0 文字」に一致します。たとえば dir ab? は abc だけでなく ab にも一致します。途中に置いた ? は、必ず 1 文字に一致します。

*.* と *.

パターン一致するもの
*.*すべてのファイル(拡張子なしも含む)
*.拡張子のないファイル
*すべてのファイル

*.* は「拡張子のあるファイル」ではなく、拡張子のないファイルも含むすべてのファイルを指します。

コマンドごとの使用例

dir:一覧表示と検索

サブフォルダも含めて
dir /s /b *.log

詳しくは

を参照してください。

copy / del / move:まとめて操作

txt
copy *.txt backup\
tmp
del *.tmp
cache
move cache* archive\

パスに空白が含まれる場合は、ワイルドカードを含めてパス全体を引用符で囲みます。

空白を含むパスの例
del "C:\My Files\*.tmp"

ren:拡張子をまとめて変更

txt
ren *.txt *.bak

ren では、変更後の名前にもワイルドカードを使い、元の名前の対応する部分を引き継げます。詳しくは

を参照してください。

for:1 つずつ処理

for のかっこ内にワイルドカードを書くと、一致したファイルを 1 つずつ変数に受け取れます。

txt
for %f in (*.txt) do @echo %f
バッチファイル内で使う場合

上記はコマンドプロンプトに直接入力する例です。バッチファイル内では %f を %%f に書き換えてください。

フォルダを対象にする場合は for /d、サブフォルダまで再帰的に探す場合は for /r を使います。詳しくは

を参照してください。

if exist:存在確認

txt
if exist *.txt echo txt ファイルがあります

詳しくは

を参照してください。

注意点

ワイルドカードを展開するのはコマンド自身

bash などと違い、コマンドプロンプトはワイルドカードを展開せず、そのままコマンドに渡します。

- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>echo *.txt
*.txt
C:\users\user>

echo はワイルドカードを解釈しないため、文字列がそのまま表示されます。ワイルドカードが使えるかどうかは、コマンドごとに異なります。

コマンドワイルドカード
dir copy del move ren type使える
for(かっこ内)使える
where使える
rmdir(rd)使えない(for /d と組み合わせる)
cd使えない
findファイル名には使えない(for と組み合わせる)
findstr検索パターンは正規表現。ファイル名には使える

フォルダ名の途中には使えない

エラーになる例
dir C:\Us*\Documents

フォルダ名の途中でワイルドカードを使ってもパスとして解釈されません。サブフォルダを横断して探したい場合は、/s を使います。

サブフォルダを含めて検索
dir /s /b C:\Users\*.docx

拡張子が長く一致してしまう(8.3 形式の短い名前)

ファイルシステムが 8.3 形式の短い名前を生成している環境では、拡張子が 4 文字以上のファイルにも一致することがあります。短い名前では拡張子が 3 文字に切り詰められるためです。

.doc
dir *.doc
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>dir /b *.doc
letter.doc
report.docx
C:\users\user>

del *.doc のように削除で使うと、.docx まで消えてしまう可能性があります。破壊的な操作の前には、同じパターンで dir を実行して対象を確認してください。

削除前に dir で確認する

del や move を実行する前に、同じパターンで dir /b パターン を実行し、対象のファイルを必ず確認しましょう。del *.* はカレントフォルダ内のすべてのファイルを削除する(確認メッセージが表示されます)ため、特に注意が必要です。

フォルダの扱い

dir はパターンに一致するフォルダも表示しますが、del は一致したフォルダを削除しません(ファイルのみが対象です)。フォルダをワイルドカードで削除したい場合は、次のように for /d を使います。

tmp
for /d %d in (tmp*) do rd /s /q "%d"

バッチファイル内で使う場合は、ここでも %d を %%d に書き換えてください。

隠しファイル

dir や del は、隠しファイルやシステムファイルを既定では対象にしません。dir で表示するには /a オプションを付けます。

隠しファイルも含めて表示
dir /a *.txt

del で隠しファイルも削除するには del /a *.tmp のように /a を付けます。

まとめ

やりたいこと例
拡張子で絞り込むdir *.txt
先頭の文字列で絞り込むdir report*
1 文字だけ違うファイルを指定するdir data?.csv
拡張子のないファイルを探すdir *.
サブフォルダも含めて探すdir /s /b *.log
1 つずつ処理するfor %f in (*.txt) do ...
拡張子を一括変更するren *.txt *.bak

関連記事

練習問題

練習問題

data?.csv に一致するファイル名はどれですか?

正しいものを 1 つ選んでください。

  1. data1.csv
  2. data10.csv
  3. data.txt

練習問題

コマンドプロンプトでワイルドカードを展開するのは誰ですか?

正しいものを 1 つ選んでください。

  1. コマンドプロンプト自身が展開してからコマンドに渡す
  2. 展開せずに渡し、コマンド自身が解釈する
  3. Windows のファイルシステムが自動的に展開する
#コマンドプロンプト #バッチファイル #ワイルドカード #コマンドライン #コマンド