短縮名 (8dot3) の生成を強制するにはどうすればいいですか?

短縮名 (8dot3) の生成を強制するにはどうすればいいですか?

Windows のショートネームに問題があります。「Program Files」および「Program Files (x86)」のショートネームが生成されないことがあります。

短い名前の生成が有効になっていることを確認しました。fsutil behavior query disable8dot3 C:これにより、システム全体の設定が2(ボリュームごと) で、ローカル値が0(8dot3 名の作成) であることがわかります。

大体次のようになります (これはドイツ語の 32 ビット コピーであることに注意してください)。

C:\>dir /a /x

 Verzeichnis von C:\

21.12.2011  00:17    <DIR>                       $Recycle.Bin
14.07.2009  05:53    <VERBINDUNG>   DOCUME~1     Documents and Settings [C:\Users]
09.01.2011  15:35    <VERBINDUNG>   DOKUME~1     Dokumente und Einstellungen [C:Users]
27.11.2013  15:11     2.147.016.704              pagefile.sys
14.07.2009  03:37    <DIR>                       PerfLogs
26.11.2013  17:31    <DIR>          PROGRA~1     Program Files
08.11.2013  21:58    <DIR>          PROGRA~2     ProgramData
09.01.2011  15:35    <VERBINDUNG>   PROGRA~3     Programme [C:\Program Files]
09.01.2011  15:35    <DIR>                       Recovery
26.11.2013  17:40    <DIR>          SYSTEM~1     System Volume Information
23.01.2011  15:00    <DIR>                       Temp
11.01.2011  20:56    <DIR>                       Users
08.11.2013  14:53    <DIR>                       Windows

ただし、別のマシン(64ビットコピー)では、C:>dir /a /xのようになります。

 Verzeichnis von C:\

21.12.2011  00:17    <DIR>                       $Recycle.Bin
14.07.2009  05:53    <VERBINDUNG>   DOCUME~1     Documents and Settings [C:\Users]
09.01.2011  15:35    <VERBINDUNG>   DOKUME~1     Dokumente und Einstellungen [C:Users]
27.11.2013  15:11     2.147.016.704              pagefile.sys
14.07.2009  03:37    <DIR>                       PerfLogs
26.11.2013  17:31    <DIR>                       Program Files
26.11.2013  17:31    <DIR>                       Program Files (x86)
08.11.2013  21:58    <DIR>                       ProgramData
09.01.2011  15:35    <DIR>                       Recovery
26.11.2013  17:40    <DIR>          SYSTEM~1     System Volume Information
23.01.2011  15:00    <DIR>                       Temp
11.01.2011  20:56    <DIR>                       Users
08.11.2013  14:53    <DIR>                       Windows

お気づきかもしれませんが、プログラム フォルダーには短い名前がありません。

問題は、いくつかの古いスクリプトに短い名前が必要なので、どのように生成するかということです。 を試してみましたfsutil file setshortname "Program Files" "PROGRA~1"が、 しか返されませんでしたAccess denied.

答え1

コメントで述べたように... Windows が短縮名を再生成する方法として私が知っている唯一の方法は、ディレクトリをコピーして元のディレクトリを削除することです。(「Program Files」ディレクトリでは実行できません。)

長いファイル名とフォルダ名を使用するようにスクリプトを変更するのが最善です。スクリプトが を使用すると、PROGRA~1ディレクトリがコピーバックされる方法でドライブがクローン化されたインストールで問題が発生します。たとえば、ProgramDataが最初にディスクにコピーされた場合、 という名前になりPROGRA~1Program Filesという名前になりますPROGRA~2

今のところスクリプトを動作させ続けるオプションがあります:

あなたは、ディレクトリジャンクションからPROGRA~1までC:\Program Files。こうすることで、スクリプトは動作し続け、変更する時間も得られます。

mklink /J "C:\PROGRA~1" "C:\Program Files"

出力mklink /?:

Creates a symbolic link.

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      Creates a directory symbolic link.  Default is a file
                symbolic link.
        /H      Creates a hard link instead of a symbolic link.
        /J      Creates a Directory Junction.
        Link    specifies the new symbolic link name.
        Target  specifies the path (relative or absolute) that the new link
                refers to.

答え2

プログラム ファイルの短縮名 (8dot3) を定義するには、次の手順を実行します。

  1. コンピューターを再起動
  2. 起動時にセーフモードで起動し、cmd プロンプトを表示します (私のコンピューターでは F8 キー)
  3. ログイン
  4. コマンドプロンプトから次のコマンドを入力します

    fsutil 8dot3name query
    fsutil behavior set disable8dot3 0
    fsutil file setshortname "Program Files" PROGRA~1
    dir /X
    

これで、プログラム ファイルに定義された短縮名が表示されます。必要に応じて、8dot3name の動作を、クエリ コマンドによって返された元の設定に戻します。

関連情報