Wie erzwinge ich die Generierung von Kurznamen (8dot3)?

9

Ich habe ein Problem mit Windows Windows-Kurznamen. Manchmal scheinen die Kurznamen für "Programme" und "Programme (x86)" nicht generiert zu werden.

Ich habe überprüft, ob die Generierung von Kurznamen aktiviert ist, fsutil behavior query disable8dot3 C:wodurch angegeben wird, dass die systemweite Einstellung 2(pro Volume) und der lokale Wert 0(8dot3-Namen erstellen) lautet.

Es sollte ungefähr so ​​aussehen (beachten Sie, dass es sich um eine deutsche 32-Bit-Kopie handelt):

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

Auf einem anderen Computer (64-Bit-Kopie) sieht dies jedoch wie folgt aus: 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

Wie Sie vielleicht bemerkt haben, fehlen die Kurznamen für die Programmordner.

Die Frage ist nun, wie man sie generiert, weil ich diese Kurznamen für ein paar ältere Skripte brauche. Ich habe es versucht fsutil file setshortname "Program Files" "PROGRA~1", aber das gibt mir nur Access denied..

pgampe
quelle
Ich weiß nur, wie Windows den Kurznamen neu generiert, indem ich das Verzeichnis kopiere und das Original lösche. Natürlich wird das für die nicht funktionieren Program Files. Es ist nicht möglich, die Skripte anzupassen? Ich hoffe auch, dass das Skript nicht denkt, dass das Program Files-verzeichnis immer so ist, PROGRA~1weil in diesem Fall Ihr Skript möglicherweise in ernsthaften Schwierigkeiten läuft, weil die Kurznamen nicht immer gleich sind. Sie können auch um Hilfe bitten, um die Skripte auf den Langnamen (anstelle des Kurznamens) findfirst usw. zu aktualisieren (falls überhaupt möglich).
Rik
Ich bin mir der Probleme mit Kurznamen bewusst und würde diese Skripte niemals selbst schreiben. Ich würde immer die env vars dafür verwenden ( %programfiles%). Das Umbenennen funktioniert in der Tat nicht. Vielleicht kann ich das offline machen? Könnte eine Problemumgehung sein.
pgampe
Haben Sie versucht, den Befehl als Administrator auszuführen? Erstellen Sie 8.3 Namen für ein vorhandenes Verzeichnis
phuclv
Sicher. Es hat nicht funktioniert.
pgampe

Antworten:

5

Wie ich in meinem Kommentar sagte ... Der einzige Weg, wie ich weiß, wie Windows den Kurznamen neu generieren wird, besteht darin, das Verzeichnis zu kopieren und das Original zu löschen. (Nicht möglich für das Verzeichnis "Programme".)

Es ist am besten, das Skript so zu ändern, dass lange Datei- und Ordnernamen verwendet werden. Wenn das Skript verwendet PROGRA~1, treten Probleme bei Installationen auf, bei denen das Laufwerk so geklont wurde, dass die Verzeichnisse zurückkopiert wurden. Wenn es beispielsweise ProgramDatazuerst auf die Festplatte kopiert wird, wird es benannt PROGRA~1und Program Filesbenannt PROGRA~2.

Es gibt eine Option, um die Skripte vorerst funktionsfähig zu halten :

Sie können eine Verzeichnisverbindung von PROGRA~1bis erstellen C:\Program Files. Auf diese Weise funktionieren die Skripte weiter und Sie haben Zeit, sie zu ändern.

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

Ausgabe von 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
quelle
Gute Idee, einen Verzeichnissprung zu verwenden :)
pgampe
Werden Änderungen von mklinkpermanent vorgenommen oder funktionieren sie nur in einem Batch-Skript, das ausgeführt wird? Entschuldigung, ich habe nicht genug Informationen über Symlinks und Junctions.
Alireza Mohamadi
@AlirezaMohamadi Änderungen mit mklinksind dauerhaft. Genau wie mkdir.
Rik
9

Gehen Sie wie folgt vor, um Kurznamen (8dot3) für Programmdateien zu definieren:

  1. Starte den Computer neu
  2. beim Booten im Safemode mit cmd-Eingabeaufforderung starten (F8 auf meinem Computer)
  3. Einloggen
  4. Geben Sie an der Eingabeaufforderung cmd die folgenden cmds ein

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

Sie sollten nun den für Programmdateien definierten Kurznamen sehen. Wenn Sie möchten, setzen Sie das Verhalten von 8dot3name auf die ursprüngliche Einstellung zurück, die von der Abfrage cmd zurückgegeben wurde.

monkeyfncoconut
quelle
2
FWIW- Ich musste meinen Computer für nichts davon neu starten. Sie können 8.3 auch auf verschiedenen Laufwerken selektiv aktivieren / deaktivieren. Der Registrierungsspeicherort für alle diese Einstellungen lautet HKLM: \ System \ CurrentControlSet \ Control \ FileSystem \ Ntfs *. Siehe support.microsoft.com/en-us/kb/121007
Coruscate5
Ja, ich blieb einfach dort, wo ich war und tat:
Mike Mounier