Come forzare la generazione di nomi brevi (8dot3)?


9

Ho un problema con i nomi brevi di Windows. A volte i nomi brevi non sembrano essere generati per "Programmi" e "Programmi (x86)".

Ho verificato che la generazione di nomi brevi è abilitata, il fsutil behavior query disable8dot3 C:che mi dice che l'impostazione a livello di sistema è 2(per volume) e che il valore locale è 0(creare nomi 8dot3).

Dovrebbe apparire più o meno così (si noti che è una copia tedesca a 32 bit):

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

Tuttavia, su un'altra macchina (copia a 64 bit), sembra 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

Come avrai notato, mancano i nomi brevi per le cartelle del programma.

La domanda è ora come generarli, perché ho bisogno di quei nomi brevi per alcuni script più vecchi. Ci ho provato fsutil file setshortname "Program Files" "PROGRA~1", ma questo mi dà Access denied..


L'unico modo per sapere come Windows rigenererà il nome breve è copiare la directory ed eliminare l'originale. Certo che non funzionerà per Program Files. Non è possibile modificare gli script? Inoltre, spero che lo script non stia pensando che la Program Filesdirectory sia sempre PROGRA~1perché in questo caso lo script verrà eseguito in qualche guaio alla fine perché i nomi brevi non sono sempre gli stessi. Potresti anche chiedere aiuto per aggiornare gli script al nome lungo (anziché al nome breve) prima ecc. (Se possibile).
Rik,

Sono a conoscenza dei problemi con i nomi brevi e non scriverei mai quegli script da solo. Userei sempre gli env vars per questo ( %programfiles%). La ridenominazione non funziona davvero. Forse posso farlo da offline? Potrebbe essere una soluzione.
pgampe,

hai provato a eseguire il comando come amministratore? Crea il nome 8.3 per una directory esistente
phuclv,

Sicuro. Non ha funzionato.
pgampe,

Risposte:


5

Come ho detto nel mio commento ... L'unico modo in cui so come rigenererà il nome breve di Windows è copiare la directory ed eliminare l'originale. (non realizzabile per la directory "Programmi").

Sarebbe meglio cambiare lo script per usare nomi lunghi di file e cartelle. Se lo script viene utilizzato, PROGRA~1si verificheranno problemi con le installazioni in cui l'unità è stata clonata in un modo in cui le directory sono state copiate. Ad esempio, se ProgramDataviene copiato per primo sul disco, verrà denominato PROGRA~1e Program Filesverrà denominato PROGRA~2.

C'è un'opzione per mantenere gli script funzionanti per ora :

È possibile creare una giunzione di directory da PROGRA~1a C:\Program Files. In questo modo gli script continuano a funzionare e hai il tempo di cambiarli.

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

Uscita di 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.

Buona idea usare un salto nella directory :)
pgampe,

Le modifiche vengono apportate in modo mklinkpermanente o funzionano solo nello script batch che viene eseguito? Spiacente, non ho abbastanza informazioni su collegamenti simbolici e incroci.
Alireza Mohamadi,

@AlirezaMohamadi Le modifiche apportate mklinksono permanenti. Proprio come mkdir.
Rik

9

Per definire i nomi brevi (8dot3) per i file di programma, procedi come segue:

  1. Riavvia il computer
  2. all'avvio avviare in safemode con prompt cmd (F8 sul mio computer)
  3. Accesso
  4. dal prompt di cmd inserire i seguenti cmds

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

Ora dovresti vedere il nome breve definito per i file di programma. Se lo desideri, ripristina il comportamento 8dot3name sull'impostazione originale che è stata restituita dalla query cmd.


2
FWIW- Non avevo bisogno di riavviare il mio computer per nulla di tutto ciò. Inoltre, è possibile abilitare / disabilitare selettivamente 8.3 su unità diverse. Il percorso del registro per tutte queste impostazioni è HKLM: \ System \ CurrentControlSet \ Control \ FileSystem \ Ntfs *. Vedi support.microsoft.com/en-us/kb/121007
Coruscate5

Sì, sono rimasta dove ero e ho fatto:
Mike Mounier,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.