web-dev-qa-db-ja.com

短い名前(8dot3)を強制的に生成する方法は?

私はwindows windows shortnamesに問題があります。 「Program Files」と「Program Files(x86)」の短い名前が生成されないように見える場合があります。

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

おおよそ次のようになります(これはドイツの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.を与えるだけです。

9
pgampe

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

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

今のところスクリプトを機能させるオプションがあります

directory-junctionPROGRA~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.
5
Rik

プログラムファイルの短縮名(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の動作を、クエリcmdによって返された元の設定に戻します。

9
monkeyfncoconut