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


9

我对Windows Windows短名称有问题。有时似乎没有为“程序文件”和“程序文件(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.


我知道Windows如何重新生成短名称的唯一方法是复制目录并删除原始名称。当然,这对您来说是行不通的Program Files。无法调整脚本?另外,我希望脚本不要一直使用Program Files-directory,PROGRA~1因为这样的话,您的脚本最终将在某些严重的麻烦中运行,因为短名称并不总是相同。您还可以寻求帮助,以将脚本升级为长名称(而不是短名称)findfirst等(如果可能)。
瑞克(Rik)

我知道短名称的问题,并且我永远不会自己编写这些脚本。我将始终为此使用env vars(%programfiles%)。重命名确实不起作用。也许我可以离线进行此操作?可能是一种解决方法。
pgampe

您是否尝试以管理员身份运行命令?为现有目录创建8.3名称
-phuclv

当然。那没起效。
pgampe

Answers:


5

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

最好将脚本更改为使用长文件名和文件夹名。如果脚本使用该脚本PROGRA~1,则在复制驱动器的安装方式中会遇到麻烦,因为复制驱动器的方式是将目录复制回。例如,如果ProgramData被复制的第一到磁盘它将被命名PROGRA~1Program 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.

使用目录跳转的好主意:)
pgampe

mklink永久更改还是仅在正在运行的批处理脚本中起作用?抱歉,我没有关于符号链接和连接的足够信息。
Alireza Mohamadi

@AlirezaMohamadi与所做的更改mklink是永久的。就像mkdir
瑞克(Rik)

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
    

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


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

是的,我只是呆在
原地
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.