如何強制產生短名稱(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~1並將Program Files命名為PROGRA~2

有一個選項可以讓腳本暫時保持工作狀態:

你可以創建一個目錄連接PROGRA~1C:\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. 從 cmd 提示符號輸入以下 cmd

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

現在您應該看到為程式檔案定義的短名稱。如果您願意,請將 8dot3name 行為設定回查詢 cmd 傳回的原始設定。

相關內容