Comment forcer la génération de noms courts (8dot3)?

9

J'ai un problème avec les raccourcis windows windows. Parfois, les noms courts ne semblent pas être générés pour "Program Files" et "Program Files (x86)".

J'ai vérifié que la génération de noms courts est activée, fsutil behavior query disable8dot3 C:ce qui m'indique que le paramètre à l'échelle du système est 2(par volume) et que la valeur locale est 0(créer des noms 8dot3).

Il devrait ressembler à peu près à ceci (notez qu'il s'agit d'une copie allemande 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

Cependant sur une autre machine (copie 64 bits), cela ressemble à 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

Comme vous l'avez peut-être remarqué, les noms courts sont manquants pour les dossiers du programme.

La question est maintenant de savoir comment les générer, car j'ai besoin de ces noms courts pour quelques scripts plus anciens. J'ai essayé avec fsutil file setshortname "Program Files" "PROGRA~1", mais cela me donne juste Access denied..

pgampe
la source
La seule façon dont je sais comment Windows va recréer le nom court est de copier le répertoire et de supprimer l'original. Bien sûr, cela ne fonctionnera pas pour le Program Files. Il n'est pas possible d'ajuster les scripts? En outre, j'espère que le script ne pense pas que le Program Filesrépertoire est toujours PROGRA~1parce que si c'est le cas, votre script finira par avoir de sérieux problèmes parce que les noms courts ne sont pas toujours les mêmes. Vous pouvez également demander de l'aide pour mettre à niveau les scripts vers le nom long (au lieu du nom court) findfirst etc. (si possible).
Rik
Je suis conscient des problèmes avec les noms courts et je n'écrirais jamais ces scripts moi-même. J'utiliserais toujours les vars env pour cela ( %programfiles%). Renommer ne fonctionne en effet pas. Peut-être que je peux le faire hors ligne? Cela pourrait être une solution de rechange.
pgampe
avez-vous essayé d'exécuter la commande en tant qu'administrateur? Créer un nom 8.3 pour un répertoire existant
phuclv
Sûr. Cela n'a pas fonctionné.
pgampe

Réponses:

5

Comme je l'ai dit dans mon commentaire ... La seule façon dont je sais comment Windows va recréer le nom court est de copier le répertoire et de supprimer l'original. (non réalisable pour le répertoire "Program Files".)

Il serait préférable de changer le script pour utiliser des noms de fichiers et de dossiers longs. Si le script l'utilise, PROGRA~1il aura des ennuis avec les installations où le lecteur a été cloné d'une manière où les répertoires ont été recopiés. Par exemple, si ProgramDataest copié en premier sur le disque, il sera nommé PROGRA~1et Program Filessera nommé PROGRA~2.

Il existe une option pour que les scripts fonctionnent pour le moment :

Vous pouvez créer une jonction d' annuaire de PROGRA~1à C:\Program Files. De cette façon, les scripts continuent de fonctionner et vous avez le temps de les modifier.

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

Sortie 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.
Rik
la source
Bonne idée d'utiliser un saut d'annuaire :)
pgampe
Les modifications sont-elles apportées par mklinkpermanent ou fonctionnent-elles uniquement dans un script de commandes en cours d'exécution? Désolé, je n'ai pas assez d'informations sur les liens symboliques et les jonctions.
Alireza Mohamadi
@AlirezaMohamadi Les modifications effectuées avec mklinksont permanentes. Tout comme mkdir.
Rik
9

Pour définir des noms courts (8dot3) pour les fichiers programme, procédez comme suit:

  1. Redémarrer l'ordinateur
  2. au démarrage au démarrage en mode sécurisé avec invite cmd (F8 sur mon ordinateur)
  3. S'identifier
  4. à partir de l'invite cmd, entrez les cmds suivants

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

Vous devriez maintenant voir le nom abrégé défini pour les fichiers programme. Si vous le souhaitez, redéfinissez le comportement 8dot3name sur le paramètre d'origine qui a été renvoyé par la requête cmd.

monkeyfncoconut
la source
2
FWIW- Je n'ai pas eu besoin de redémarrer mon ordinateur pour tout cela. En outre, vous pouvez activer / désactiver de manière sélective 8.3 sur différents lecteurs. L'emplacement du Registre pour tous ces paramètres est HKLM: \ System \ CurrentControlSet \ Control \ FileSystem \ Ntfs *. Voir support.microsoft.com/en-us/kb/121007
Coruscate5
Oui, je suis juste resté où j'étais et j'ai fait:
Mike Mounier le