コマンドプロンプトでワイルドカードに想定外のものがヒットする
残念ながら締め切りになってしまってOkwaveには回答できませんでした。
MS-DOSのワイルドカードの扱いについて 質問者:treelock
Windows 7環境で、MS-DOSのバッチファイルを作っています。
MS-DOS上でのワイルドカードの扱いに疑問がわいたので質問させてください。C:\直下に
TEST - 01、TEST - 02、…、TEST - 12
というディレクトリを作ったのですが、
dir *04*
のコマンドで
TEST - 04
TEST - 09
の両方がヒットしてしまいます。TEST - 04のみヒットすることを期待したのですが、09のほうまでヒットするのはなぜでしょうか。
以下、テキスト貼り付けですが、画面のコピーです。
C:\>dir *04*
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は ****-**** ですC:\ のディレクトリ
2013/08/03 22:40
TEST - 09 2013/08/03 22:39 TEST - 04 0 個のファイル 0 バイト MS-DOSのワイルドカードの扱いについて - その他(Windows) 解決済み| 【OKWAVE】
一番わかりやすいのがこの例。
C:\Users\xxx>cd \ C:\>dir *1 ドライブ C のボリューム ラベルは ABCDEFG004 です ボリューム シリアル番号は 1234-ABCD です C:\ のディレクトリ 2013/07/20 13:21 <DIR> Program Files 0 個のファイル 0 バイト
ですかね。それで答えは dir /x ってやるとわかると思います。
2013/07/20 13:21 <DIR> PROGRA~1 Program Files
8.3型式のファイル名にはまらない(文字数や空白が入ってる)場合に、8.3形式のファイルが自動的に割り当てられるんです。
短いファイル名とも言われます。ワイルドカードはこれにも引っかかるんですね。