如何强制短名称(8dot3)生成?

pga*_*mpe 10 windows-7 command-line cmd.exe

我有 windows 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
Run Code Online (Sandbox Code Playgroud)

但是在另一台机器(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
Run Code Online (Sandbox Code Playgroud)

您可能已经注意到,程序文件夹缺少短名称。

现在的问题是如何生成它们,因为我需要一些旧脚本的短名称。我试过fsutil file setshortname "Program Files" "PROGRA~1",但这只是给了我Access denied.

小智 9

要为程序文件定义短名称 (8dot3),请执行以下操作:

  1. 重启电脑
  2. 使用 cmd 提示符以安全模式启动时(在我的电脑上按 F8)
  3. 登录
  4. 从 cmd 提示符输入以下 cmds

    fsutil 8dot3name query
    fsutil behavior set disable8dot3 0
    fsutil file setshortname "Program Files" PROGRA~1
    dir /X
    
    Run Code Online (Sandbox Code Playgroud)

您现在应该看到为程序文件定义的短名称。如果您愿意,请将 8dot3name 行为设置回查询 cmd 返回的原始设置。

  • FWIW- 我不需要为此重新启动计算机。此外,您可以在不同的驱动器上有选择地启用/禁用 8.3。所有这些设置的注册表位置是 HKLM:\System\CurrentControlSet\Control\FileSystem\Ntfs*。请参阅 https://support.microsoft.com/en-us/kb/121007 (2认同)

Rik*_*Rik 6

就像我在评论中所说的那样......我知道Windows将如何重新生成短名称的唯一方法是复制目录并删除原始目录。(不适用于“程序文件”目录。)

最好将脚本更改为使用长文件名和文件夹名。如果该脚本使用PROGRA~1它,则会遇到以复制回目录的方式克隆驱动器的安装的麻烦。例如,如果ProgramData首先将其复制到磁盘上,它将被命名PROGRA~1Program Files命名为PROGRA~2

有一个选项可以让脚本暂时正常工作

您可以从to创建目录连接。这样脚本就可以继续工作,您就有时间更改它们。PROGRA~1C:\Program Files

mklink /J "C:\PROGRA~1" "C:\Program Files"
Run Code Online (Sandbox Code Playgroud)

的输出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.
Run Code Online (Sandbox Code Playgroud)