.NET

Dosで8.3形式の短いファイル名を使う

久し振りに DOS のバッチを触ることになったのですが、少ししか触ったことなかった割には意外に覚えているものです。

dir とか cp なんてものはお決まりで、Linux でいうところの ls や cp と同じ意味なのですが、もちろん特殊なコマンドも多数あります。

最近はもっぱらネットワーク絡みで ping や nslookup、ipconfig、時には nbtstat や netstat などを使うくらいでしょうか。

Dosで新たに知ったこと

さてさて、そんな DOS バッチで新しく知ったことを書き残しておきます。

まあ、DOS なんで需要なんてほとんどないでしょうが・・・。

WindowsXP には Program Files や Documents and Settings などの半角スペースが混ざったディレクトリ(フォルダ)が最初から存在します。
(Windows Vista は触ったことないので知りません)

このディレクトリ名をそのまま記述すると、半角スペースで区切られて、Program Files だと Program の部分だけしか解釈されない場合があります。

引数で使うときなどはよくあるパターンですね。そこで、半角スペースを含むディレクトリパスやファイルパスはダブルクォーテーションで囲んで記述してあげます。

半角スペースを含むディレクトリパスやファイルパス

例えば、”C:\Program Files” や “C:\Documents and Settings” みたいなパターンですね。

しかし、start コマンドを使って、別ウィンドウなどでプログラムを起動させる場合、起動プログラムのパスに半角スペースが含まれるとうまく解釈してもらえません。

例えば、こんなコマンドです。

上記のように半角スペースを含む長いパスは、プログラムによっては実行コマンドや引数を解釈できない場合があります。

そこで、8.3 形式で表現してあげる必要が出てきます。

8.3 形式での表現方法は、dir コマンドを使うとわかります。

8.3 形式のファイル名は dir /x の結果で表示されている DOCUME~1 や PROGRA~1 が該当します。

この形式でファイル名やディレクトリ名を定義してあげれば、start コマンドを使ったプログラムも問題なく動作します。

下記のサイトに詳しい説明があるので参考にしてみて下さい。