ファイル名には半角スペースありき!
WINDOWS系では、ファイル名に漢字や半角スペースが使用できます。
基本的にファイル名の命名は、『\ / : * ? " < > |』以外の文字で、MAX255文字まで付けられます。
しかし、以下の例外があります。
- 右のファイル名は、すでに存在している。CON, AUX, COMn(nは1〜9), LPTn(nは1〜9), PRN, NUL。
- 右の拡張子は、すでに予約されているらしい。lnk, url, pif, cnf, mydocs, shs, shb, desklink, MAPIMail。
- ファイル名の先頭に半角スペースやドットは、不可。(尚、ドットは、コマンドプロンプトからのrenameだと可能です)
ちなにみ、ルートディレクトリには、ファイルが512個までしか作成できない。
また、WindowsNT系では、ファイル名がUnicodeなのでSJISにない文字も付けられる。たとえば、ハートマーク等。
前置きが長くなりましたが、ファイル名に半角スペースがあるとコマンドプロンプトから起動する時にファイル名と引数の区別がつかなくなります。
通常、ファイル名をダブルコーテーションで囲めば回避できます。しかし、たまに回避できないケースにも遭遇します。
したがって、このようなケースをなくすためにも、プログラムを作成する側は、常にファイル名(フォルダ名含む)に半角スペースがあるものとして処理しないとなりません。
つまり、パスのフォルダ名やファイル名に半角スペースが入る可能性がある場合には、それをダブルコーテーションで囲みます。