
私は Windows 7 x64 を使用しています。
というフォルダーを右クリックしてC:\Longer than (3)
「送信」をクリックし、受け取った引数だけを表示する .ahk ファイルに送信すると、 と表示されますC:\LONGER~3
。ほとんどすべてのファイルで同じことが起こり、たとえばC:\Новый текстовый документ.txt
→ になりますC:\700C~1.TXT
。
これらのパスを通常のパスに変換するにはどうすればいいでしょうか?では、パス変換とは何でしょうか?
答え1
これは 8.3 ファイル名:
8.3 ファイル名 (短縮ファイル名または SFN とも呼ばれる) は、古いバージョンの DOS および Windows 95 と Windows NT 3.5 より前のバージョンの Microsoft Windows で使用されるファイル名規則です。また、レガシー プログラムとの互換性を保つために、最新の Microsoft オペレーティング システムでも長いファイル名の代替ファイル名として使用されています。...
削除
された名前は、ベース名の最初の 6 文字に切り捨てられ、その後にチルダ、1 桁の数字、ピリオド (.)、拡張子の最初の 3 文字が続きます。
数字は単なるカウンターです。 の場合C:\LONGER~3
、 で始まるファイルが 3 つあるか、あった可能性がありますC:\LONGER
。
この形式を使用すると、ファイル名を特殊文字、特に空白を含まない形式に変換できます。名前に非表示の特殊文字が含まれるファイルを削除したり、空白を含まないパラメータとして渡したりする場合 (空白を含まない場合は最初の空白に切り捨てられる可能性があります) に非常に便利です。
これらの名前は長い名前と同じように機能するため、長い形式に変換する機能上の必要はありません。
8.3形式の名前を長い形式に変換する複数の方法については、次の投稿を参照してください。
バッチ スクリプト内で Windows の短い名前のパスを長い名前に変換するにはどうすればよいでしょうか。。
答え2
私の知る限り、元のファイル名を取得することはできません。ただし、次のコマンドでこのオプションを無効にすることができます。
fsutil.exe 8dot3name set D: 1
これにより、ディスクに対して無効になりますD
。システム全体で無効にするには、次のようなコマンドを使用します。
fsutil.exe behavior set disable8dot3 1
PS このコマンドが Windows 7 で使用できるかどうかは不明です