コマンドラインでファイル名を指定する際には、ワイルドカードという代替え文字を利用することができます。ワイルドカードは、同じようなファイル名を一括して指定できる便利な機能です。
ワイルドカードは「*」や「?」という2つの記号を指し、複数のファイルなどまとめて指定する際に使用します。
- 「?(クエスチョン)」……任意の一文字(0文字、または1文字)を代替
- 「*(アスタリスク)」……任意の複数文字(0から任意の文字数)を代替
「?」記号は任意の0文字〜1文字を代替するので、例えば次のようなDIR test?.txtというコマンドを実行すると、先頭にtest、最後に.txt、間に0または1文字のファイル名が適合しますね。DIR test??.txtの場合、先頭にtest、最後に.txt、間に0または2文字のファイル名が適合しますね。
つまり、ワイルドカードを使用する事によって複数のファイルに対する条件のようなものを指定することができます。また、ファイル名に適合することを「マッチ」するというので、覚えておいてください。
> DIR test?.txt
上記のコマンド場合、カレントディレクトリからファイルの名の最初がtest、最後が.txtで間に0文字または1文字が入るファイルのみ表示する事になります。実際にマッチするファイル名の例を挙げてみると以下のようになります。
- test.txt (間の1文字が0文字の場合)
- test1.txt (間の1文字が”1″の場合)
- text2.txt (間の1文字が”2″の場合)
- test!.txt (間の1文字は記号でも構わない)
> DIR test??.txt
- test.txt
- test1.txt
- text02.txt
- test_1.txt
など、「?」を2つ続けて入力すると0文字から2文字分の文字を代替します。最初がtestで最後が.txt、間に0,1,2文字入るという条件になります。
次に「*」は0文字または何文字でも代替します。例えば次のようなコマンドを入力すると
> DIR *.txt
最初は何文字かわからないが、最後は.txtが入ってるファイル名となり、拡張子.txtを持ったテキストファイルのみ表示するといったコマンドになります。
アスタリスクは共通のキーワードや拡張子を持ったファイル名を探すのによく使われます。上記のコマンドでマッチするファイル名は
- SAMPLE.txt
- schedule.txt
- setuplog.txt
など、拡張子が.txtであれば、他の部分は0文字から何文字でも良いので、大抵のファイル名でマッチします。
さらに「*」記号をファイル名の中間に指定すると、前後に任意の文字列を持つファイルを指定することができますし、例えばDIR *set*を実行するとファイル名のどこかに「set」という文字があるファイルを表示することができます。
ただし「*」+「数字」というパターンで使用する場合は、ロングファイルネームだけでなくショートファイルネームも検索が行われます。例えば「DIR *1.txt」のように指定すると「abcdef1.txt」がマッチするだけでなく、「shuwas~1.txt」といったショートファイルメームもマッチしてしまいます。これは「」+「数字」+「」のパターンでも同様のことが起こります。
ショートファイルネームとは
普段Windowsで使用しているファイル名の命名規則を「ロングファイルネーム」といいます。ロングファイルネームのルールとしては
- 250文字までのファイル名
- ドライブ名やディレクトリ名を含むパス全体で259文字
- ¥ , / , : , *, ? , ” , < , > , ¥ などの記号はファイル名に含められない
- ファイル名の最初に . をつけたファイル名は不可
- 大文字、小文字の区別はしない
などのルールがあります。
これに対してもう一つの命名規則で「ショートファイルネーム」があります。ショートファイルネームはMS-DOS時代の名残で、Windowsでロングファイルネームが使用された時、自動的にシステムが生成する名前です。そのルールとして、
- 半角英数字8文字 . 拡張子3文字
俗に8 + 3形式と呼ばれるファイル名の形式になります。
