Windows 7 のマイ ドキュメントの短縮名

Windows 7 のマイ ドキュメントの短縮名

マイドキュメントフォルダ(d:\My Documents)にインストールしたC++コンパイラにアクセスするプログラムがあります。

プログラムはパス内のスペースを処理できず、パスはすでに二重引用符で囲まれています。dir /xと を使用して短縮名を見つけようとしましたfor %I in (.) do echo %~sI。これにより、マイ ドキュメントの完全な名前が返されます。 また、試してみました%userprofile%\documentsが、プログラムはこれを認識しません。

このコマンドを使用してこのフォルダーの短い名前を取得できないのはなぜですか? 短い名前またはおそらく切り捨てられた名前を取得する別の方法はありますか?

答え1

リンクまたはショートカットを参照している可能性があります。

「マイドキュメント」のデフォルトの場所は次のとおりです。

C:\Users\%USERNAME%\Documents

したがって、%USERNAME% が「myname」の場合は、次を参照します。

C:\Users\myname\Documents

DOS 8.3 ファイル名を必要とする古い command.com プログラムを使用しているようです。この場合、最初の 6 文字を取得して、最初の項目に「~1」を追加します。最初の 6 文字が同じ項目が 2 つある場合は、次の項目は「~2」で終わります。確実にするために、「dir /x」を実行して、各フォルダに割り当てられた短縮名を確認できます。

最後の例では、この形式の長いユーザー名がどのようになるかを示します。例のユーザー名は「longusername」になります。

C:\Users\LONGUS~1\DOCUME~1

自分のユーザー名でもこのパターンに従ってください。

「マイ ドキュメント」がデフォルトの場所にない場合、または場所を動的に検索したい場合は、次のレジストリの場所を確認します。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

答え2

dir /xファイルとフォルダの短いファイル名が存在する場合はそれを表示します。長い名前が 8.3 文字形式より大きい場合は、短いファイル名が存在します。

たとえば、dir /xユーザー プロファイル フォルダーでの使用例を次に示します。

01/02/2018  05:35 PM    <DIR>                       .
01/02/2018  05:35 PM    <DIR>                       ..
10/16/2017  09:41 AM    <DIR>          ASDM~1       .asdm
11/01/2017  01:01 PM    <DIR>          GIMP-2~1.8   .gimp-2.8
11/20/2017  05:26 PM    <DIR>          NETWOR~1     .networkassistant
12/15/2016  09:54 AM    <DIR>          THUMBN~1     .thumbnails
11/16/2017  09:48 PM    <DIR>                       Contacts
07/17/2017  02:23 PM    <DIR>          DOCUME~1     Documents
01/03/2018  01:07 PM    <DIR>          DOWNLO~1     Downloads
03/14/2017  02:43 PM    <DIR>                       GNS3
12/19/2017  01:10 PM    <DIR>          GOOGLE~1     Google Drive
11/16/2017  09:48 PM    <DIR>                       Links
06/22/2017  07:20 AM    <DIR>                       OneDrive

長い名前の横に短縮名が表示されることに注意してください。

また、名前を短縮するための標準は、スペースを削除し、名前を 6 文字に短縮して ~1 を追加し、すべての文字を大文字にし、ファイル拡張子の最初の 3 文字を追加することです。競合がある場合は、代わりに ~2 が追加されます。

D:\My Documentsドキュメント フォルダが に保存されており、他に競合する名前がないと仮定すると、短縮名は になりますD:\MYDOCU~1

長いファイル名が使用できないのと同じ理由で、%userprofile% も使用できない可能性があります。プログラムは単に環境変数を理解しません。また、これも短縮名バージョンを使用していません。

関連情報