Como forçar a geração de nome abreviado (8dot3)?

Como forçar a geração de nome abreviado (8dot3)?

Eu tenho um problema com os nomes abreviados do Windows. Às vezes, os nomes abreviados não parecem ser gerados para "Arquivos de Programas" e "Arquivos de Programas (x86)".

Verifiquei que a geração de nomes abreviados está habilitada, fsutil behavior query disable8dot3 C:o que me informa que a configuração de todo o sistema é 2(por volume) e o valor local é 0(criar nomes de 8 pontos3).

Deve ser mais ou menos assim (observe que é uma cópia alemã de 32 bits):

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

No entanto, em outra máquina (cópia de 64 bits), isso se parece com 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

Como você deve ter notado, faltam nomes abreviados para as pastas do programa.

A questão agora é como gerá-los, porque preciso desses nomes curtos para alguns scripts mais antigos. Eu tentei com fsutil file setshortname "Program Files" "PROGRA~1", mas isso só me dá Access denied..

Responder1

Como eu disse no meu comentário... A única maneira de saber como o Windows irá gerar novamente o nome abreviado é copiar o diretório e excluir o original. (não é possível para o diretório "Arquivos de Programas".)

Seria melhor alterar o script para usar nomes longos de arquivos e pastas. Se o script for usado, PROGRA~1ele terá problemas com instalações onde a unidade foi clonada de forma que os diretórios foram copiados de volta. Por exemplo, se ProgramDatafor copiado primeiro para o disco, ele será nomeado PROGRA~1e Program Filesserá nomeado PROGRA~2.

Existe uma opção para manter os scripts funcionando por enquanto:

Você poderia criar umjunção de diretóriode PROGRA~1para C:\Program Files. Dessa forma os scripts continuam funcionando e você tem tempo para alterá-los.

mklink /J "C:\PROGRA~1" "C:\Program Files"

Saída de 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.

Responder2

Para definir nomes abreviados (8dot3) para arquivos de programas, faça o seguinte:

  1. Reinicialização do computador
  2. na inicialização, inicie em modo de segurança com prompt cmd (F8 no meu computador)
  3. Conecte-se
  4. no prompt do cmd, digite os seguintes cmds

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

Agora você deve ver o nome abreviado definido para arquivos de programa. Se desejar, defina o comportamento do 8dot3name de volta à configuração original que foi retornada pela consulta cmd.

informação relacionada