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

9

Eu tenho um problema com nomes de janelas 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 nome abreviado está ativada com fsutil behavior query disable8dot3 C: , o que indica que a configuração do sistema é 2 (por volume) e o valor local é 0 (crie nomes 8dot3).

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

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 parece     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, os nomes abreviados estão faltando nas pastas do programa.

A questão agora é como gerá-los, porque eu 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. .

    
por pgampe 27.11.2013 / 15:40

2 respostas

5

Como eu disse no meu comentário ... A única maneira de saber como o Windows vai gerar novamente o nome curto é 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 extensos de arquivos e pastas. Se o script usar PROGRA~1 , ele terá problemas com instalações em que a unidade foi clonada de forma que os diretórios sejam copiados de volta. Por exemplo, se ProgramData for copiado primeiro no disco, ele será nomeado PROGRA~1 e Program Files será nomeado PROGRA~2 .

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

Você pode criar um diretório-junção de PROGRA~1 a 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.
    
por 28.11.2013 / 21:31
8

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

  1. Reiniciar o computador
  2. no início da inicialização em safemode com prompt de cmd (F8 no meu computador)
  3. Fazer login
  4. do 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 para a configuração original retornada pela consulta cmd.

    
por 05.08.2014 / 20:48