Windows、コマンドプロンプトのお話。
コマンドプロンプトからexeファイルなどを実行するときに、パスの中に半角のスペースを含んだフォルダがある場合、コマンドが正しくパスを認識してくれずにコマンドが実行出来ない場合があります。
(例えば、Program Files とか Documents and Settings とか)
本来であれば半角スペースは使わず、半角アンダーバー(_)などを使えばいいのですがそうしたフォルダがある場合は、簡単にフォルダ名を変更に変えるわけにいかない場合もあるので半角スペースを含んだフォルダのパスを指定する方法を調べてみました。
MS-DOS短縮形式を利用する
半角スペースを含んだフォルダを指定するには、MS-DOS短縮形式を利用します。
この機能、正式には「MS-DOS8.3形式」という名称で、初期のMS-DOSシステムでは「8文字のファイル名」と「3文字の拡張子」のファイル名しか使えない規則があり、その当時のファイル名にのっとった形式がMS-DOS8.3形式(なんかそのまんまですね)になります。
このMS-DOS短縮形式は半角スペースを含まないため、この形式を利用してパスの指定をすることが出来ます。
MS-DOS短縮形式の確認
MS-DOS短縮形式の確認方法ですが、コマンドプロンプトで確認したいフォルダの上の階層に移動し
dir /x
を実行します。
/x のオプションを付けてdirコマンドを実行すると、ファイル名の一覧と一緒に、MS-DOS短縮形式での表記が表示されます。
例えばProgram Filesのフォルダの場合、MS-DOS短縮形式だと
PROGRA~1
と表記されるようになります。
パスを指定してみる
実際にパスとして指定してみると、こんな感じです。
cd c:\PROGRAM~1\
動画
まとめ
上記のMS-DOS短縮形式で指定をするのも結構めんどくさいので、賢い人はフォルダ名に半角カタカナを含めずに半角アンダーバーで区切りを入れてあげる方がよさそうな気がします。
ただ、Microsoftは当然その仕様を知っているにも関わらず、デフォルトで半角スペースを含む名称を重要なフォルダに付与しているんですね…。 ちょっとそこんどこどうなのよ、という気もしますけど。