Jak wymusić generowanie krótkiej nazwy (8dot3)?


9

Mam problem z krótkimi nazwami okien systemu Windows. Czasami wydaje się, że krótkie nazwy nie są generowane dla „Program Files” i „Program Files (x86)”.

Sprawdziłem, czy jest włączone generowanie krótkich nazw, fsutil behavior query disable8dot3 C:co mówi mi, że ustawienie systemowe to 2(na wolumin), a wartość lokalna to 0(utwórz nazwy 8dot3).

Powinno to wyglądać mniej więcej tak (zwróć uwagę, że jest to niemiecka 32-bitowa kopia):

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

Jednak na innym komputerze (kopia 64-bitowa) wygląda to jak 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

Jak można zauważyć, brakuje krótkich nazw folderów programu.

Pytanie brzmi teraz, jak je wygenerować, ponieważ potrzebuję tych krótkich nazw dla kilku starszych skryptów. Próbowałem z fsutil file setshortname "Program Files" "PROGRA~1", ale to po prostu daje mi Access denied..


Jedynym sposobem, w jaki wiem, jak Windows zamierza ponownie wygenerować krótką nazwę, jest skopiowanie katalogu i usunięcie oryginału. Oczywiście to nie zadziała dla Program Files. Nie można dostosować skryptów? Mam również nadzieję, że skrypt nie myśli, że Program Fileskatalog jest zawsze taki, PROGRA~1ponieważ w takim przypadku skrypt będzie działał w poważnych kłopotach, ponieważ krótkie nazwy nie zawsze są takie same. Możesz również poprosić o pomoc w aktualizacji skryptów do długiej nazwy (zamiast krótkiej nazwy) findfirst itp. (Jeśli w ogóle możliwe).
— Rik

Zdaję sobie sprawę z problemów z krótkimi nazwami i sam nigdy nie napisałbym tych skryptów. Zawsze używałbym do tego zmiennych env ( %programfiles%). Zmiana nazwy rzeczywiście nie działa. Może mogę to zrobić offline? Może to być obejście.
— pgampe

próbowałeś uruchomić komendę jako admin? Utwórz nazwę 8.3 dla istniejącego katalogu
— phuclv

Pewnie. To nie działało.
— pgampe

Odpowiedzi:


5

Tak jak powiedziałem w moim komentarzu ... Jedynym sposobem, w jaki wiem, jak Windows zamierza ponownie wygenerować krótką nazwę, jest skopiowanie katalogu i usunięcie oryginału. (nie można tego zrobić w katalogu „Program Files”).

Najlepiej byłoby zmienić skrypt, aby używał długich nazw plików i folderów. Jeśli skrypt użyje PROGRA~1go, będzie miał kłopoty z instalacjami, w których dysk został sklonowany w sposób, w jaki skopiowano katalogi. Na przykład, jeśli ProgramDatazostanie skopiowany najpierw na dysk, zostanie nazwany PROGRA~1i Program Filesbędzie nazwany PROGRA~2.

Istnieje opcja, aby skrypty działały na razie :

Możesz utworzyć połączenie katalogu od PROGRA~1do C:\Program Files. W ten sposób skrypty działają i masz czas na ich zmianę.

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

Wyjście 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.

Dobry pomysł, aby użyć skoku do katalogu :)
— pgampe

Czy zmiany są wprowadzane na mklinkstałe, czy działają po prostu w uruchamianym skrypcie wsadowym? Niestety nie mam wystarczających informacji na temat dowiązań symbolicznych i skrzyżowań.
— Alireza Mohamadi

@AlirezaMohamadi Wprowadzone zmiany mklinksą trwałe. Podobnie jak mkdir.
— Rik

9

Aby zdefiniować nazwy skrócone (8dot3) dla plików programu, wykonaj następujące czynności:

  1. Restart komputera
  2. po uruchomieniu uruchom w trybie awaryjnym z poleceniem cmd (F8 na moim komputerze)
  3. Zaloguj sie
  4. z wiersza polecenia cmd wprowadź następujące polecenia cmds

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

Powinieneś teraz zobaczyć krótką nazwę zdefiniowaną dla plików programu. Jeśli chcesz, ustaw zachowanie 8dot3name z powrotem na oryginalne ustawienie zwrócone przez zapytanie cmd.


2
FWIW- W tym celu nie musiałem restartować komputera. Ponadto możesz selektywnie włączać / wyłączać 8.3 na różnych dyskach. Lokalizacja rejestru dla wszystkich tych ustawień to HKLM: \ System \ CurrentControlSet \ Control \ FileSystem \ Ntfs *. Zobacz support.microsoft.com/en-us/kb/121007
— Coruscate5,

Tak, po prostu zostałem tam, gdzie byłem i zrobiłem:
— Mike Mounier
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.