Programming Field

ワイルドカード - DOS/コマンドプロンプト コマンド一覧

ワイルドカードとは「*」と「?」の文字で、一般的な文字列(アルファベットや数字など)と組み合わせることで、ファイルを検索する際などにファイル名の一部が分からない、あるいは同じパターンのファイル一覧を取得したい時などに用います。

文字の種類

?

「任意の1文字」を表します。例えば「ho?e」であれば「hoge」「hole」「home」「ho9e」「ho_e」などが一致します。

[MS-DOS, Windows 95/98/Me] ファイル名において「ho?e」は「ho.e」も一致しますが、「hoge.dt?」は「hoge.dt」に一致しません。ただし、「hoge?」は「hoge」に一致します。

[Windows NT/XP以降] ファイル名において「ho?e」では「ho.e」に一致しませんが、「hoge.dt?」は「hoge.dt」に、「hoge?」は「hoge」に一致します。

* 「長さ0以上の任意の文字列」を表します。例えば「win*」は「win」「wind」「windows」「wing」「wins」「win.com」などが一致します。

なお、簡易的に正規表現で置き換えると「?」→「.」、「*」→「.*」となります(微妙に異なる場合があります)。

注意点など

  • ワイルドカードはすべてのコマンドでサポートされているわけではありません。各コマンドの解説もあわせてご覧ください。
  • ワイルドカード文字「*」と「?」はファイル名・ディレクトリ名に用いることができない文字に含まれています。(そのため、「*」や「?」を含むファイル名を検索するようなことは起きえません。)

サンプル1

dir *. /w

拡張子の無いファイルすべてを表示します。これには「.」を含まないディレクトリ名も含まれます。

※ このコマンドを実行すると「.」で始まりそれ以外に「.」を含まないファイル名も表示されます。

サンプル2

for %1 in (*.*_) do expand.exe %1

Forコマンドを用い、拡張子が「_」で終わるファイルすべてに対して、それらを1つずつ引数にして「expand.exe」の実行を行います。

サンプル3 (バッチファイル)

md \Backup
copy *.in? \Backup

拡張子の最初の2文字が「in」でかつ拡張子の文字数が3文字となるファイル(例:「setup.ini」「driver.inf」)すべてをディレクトリ「\Backup」にコピーします。