
我對 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~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),請執行下列操作:
- 重新啟動計算機
- 啟動時以安全模式啟動並使用 cmd 提示字元(在我的電腦上按 F8)
- 登入
從 cmd 提示符號輸入以下 cmd
fsutil 8dot3name query fsutil behavior set disable8dot3 0 fsutil file setshortname "Program Files" PROGRA~1 dir /X
現在您應該看到為程式檔案定義的短名稱。如果您願意,請將 8dot3name 行為設定回查詢 cmd 傳回的原始設定。