Windows 10と8.3形式の短いファイル名

Windows 95の頃からだから、もう20年以上使い続けているとある市販のソフトウェアがある。
使い始めたときはWindows 95だったが、やがて2000になって、XPになって、LinuxのWineになって、さらに10になっても使い続けている。
(Windows 10になって普通のやり方ではインストールできなくなってしまった。が、LinuxのWine上で一旦インストールしてからプログラムファイルを一式コピーしてやったら、使えたので使っている)

で、Windows 10で使っていたのだが、データファイルをコピー(滅多にやらない。数年に一度くらいのペースでしかやらない)したところ、コピーしたファイルは「ファイルが開けない」というエラーで開けなくなってしまった。
あれこれやっているうちに、長いファイル名だとだめだが、短いファイル名(いわゆる8.3形式。xxx.datみたいの)であれば正常に開けることがわかった。
更に調べると、長いファイル名でも短いファイル名が設定してあればOKだが、短いファイル名が設定されていないとNGであることがわかった。

短いファイル名というのは自動的に設定されるものだと思いこんでいたのだが、Windows 10の場合にはデフォルトでは短いファイル名を設定しないようになっているそうだ。
設定してやれば、短いファイル名を自動で設定するようにすることも可能だし、長い名前のファイルに短いファイル名を手動で設定することもできることがわかった。
忘れそうなので、備忘録としてまとめておく。
(ちなみに今回のトラブルは短いファイル名を手動で設定してやることで、長いファイル名のままでも正常に開けるようになった)

(注意:以下の(多くの)操作はコマンドプロンプトを管理者で実行する必要がある。一般ユーザーだと権限不足)

長いファイル名だけではなくて短いファイル名も表示:
dir/x
(短いファイル名が設定されていない場合は空白で表示される)

短いファイル名を設定:
fsutil file setshortname "長いファイル名" 短いファイル名
(長いファイル名が空白を含む場合には""で囲む)

ディレクトリー内の全ての短いファイル名を削除:
fsutil 8dot3name strip "ディレクトリー名"

システム全体の短いファイル名の設定を表示:
fsutil 8dot3name query

各ボリュームの短いファイル名の設定を表示:
fsutil 8dot3name query c:

システム全体の短いファイル名の設定を指定:
fsutil 8dot3name set 0
fsutil 8dot3name set 1
fsutil 8dot3name set 2
fsutil 8dot3name set 3
(0:全てのボリュームで短いファイル名の作成を有効にする)
(1:全てのボリュームで短いファイル名の作成を無効にする)
(2:短いファイル名の作成の有効・無効をボリュームごとに設定する)
(3:システムボリュームを除く全てのボリュームで短いファイル名の作成を無効にする)

各ボリュームの短いファイル名の設定を指定(システム全体の設定が「2」の場合のみ意味がある):
fsutil 8dot3name set c: 0
fsutil 8dot3name set c: 1
(0:指定したボリュームで短いファイル名の作成を有効にする)
(1:指定したボリュームで短いファイル名の作成を無効にする)

【参考URL】
コマンドサポート&サンプル(特にこことか、こことか)
グルーヴであなたのビジネスは加速する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください