Estou com 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)".
Eu verifiquei que a geração de nomes curtos está ativada, o fsutil behavior query disable8dot3 C:
que indica que a configuração do sistema é 2
(por volume) e o valor local é 0
(crie nomes de 8 pontos 3).
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, os nomes abreviados estão ausentes nas pastas do programa.
A questão agora é como gerá-los, porque eu preciso desses nomes abreviados para alguns scripts mais antigos. Eu tentei com fsutil file setshortname "Program Files" "PROGRA~1"
, mas isso só me dá Access denied.
.
fonte
Program Files
. Não é possível ajustar os scripts? Além disso, espero que o script não pense que oProgram Files
diretório-é semprePROGRA~1
porque, se esse for o caso, seu script será executado com sérios problemas eventualmente, porque os nomes abreviados nem sempre são os mesmos. Você também pode pedir ajuda para atualizar os scripts para o nome longo (em vez do nome curto), findfirst etc. (se possível).%programfiles%
). Renomear realmente não funciona. Talvez eu possa fazer isso offline. Pode ser uma solução alternativa.Respostas:
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 usar,
PROGRA~1
ele terá problemas com instalações nas quais a unidade foi clonada de uma maneira que os diretórios foram copiados novamente. Por exemplo, seProgramData
for copiado primeiro no disco, ele será nomeadoPROGRA~1
eProgram Files
será nomeadoPROGRA~2
.Há uma opção para manter os scripts funcionando por enquanto :
Você pode criar uma junção de diretório de
PROGRA~1
paraC:\Program Files
. Dessa forma, os scripts continuam funcionando e você tem tempo para alterá-los.Saída de
mklink /?
:fonte
mklink
permanente ou apenas funcionam no script em lote que está sendo executado? Desculpe, não tenho informações suficientes sobre links simbólicos e junções.mklink
são permanentes. Assim comomkdir
.Para definir nomes curtos (8dot3) para arquivos de programas, faça o seguinte:
no prompt do cmd, digite os seguintes cmds
Agora você deve ver o nome abreviado definido para os arquivos de programa. Se desejar, defina o comportamento 8dot3name de volta à configuração original retornada pelo cmd da consulta.
fonte