Як змусити генерацію коротких імен (8dot3)?


9

У мене проблема з короткими іменами Windows. Іноді короткі імена, схоже, не створюються для "Файлів програми" та "Файлів програми (x86)".

Я переконався, що увімкнено генерацію коротких імен, fsutil behavior query disable8dot3 C:що повідомляє мені, що загальносистемне налаштування є 2(на об'єм) і локальне значення 0(створити 8dot3 імен).

Це має виглядати приблизно так (зауважте, що це німецька 32-бітна копія):

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

Однак на іншій машині (64-бітова копія) це виглядає як 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

Як ви могли помітити, у папках програми відсутні короткі назви.

Питання в тому, як їх створити, бо мені потрібні ці короткі назви для кількох старих сценаріїв. Я спробував fsutil file setshortname "Program Files" "PROGRA~1", але це просто дає мені Access denied..


Єдиний спосіб, коли я знаю, як Windows збирається відновити коротке ім'я, - скопіювати каталог та видалити оригінал. Звичайно , це не буде працювати для Program Files. Неможливо налаштувати сценарії? Крім того, я сподіваюся, що сценарій не думає, що Program Filesдовідник завжди, PROGRA~1тому що, якщо це так, ваш сценарій буде працювати в серйозних проблемах, врешті-решт, оскільки короткі назви не завжди однакові. Ви також можете попросити допомоги з оновленням скриптів до довгого імені (замість короткого імені) findfirst тощо (якщо це можливо).
Рік

Мені відомі проблеми із короткими іменами, і я ніколи не писав би ці сценарії сам. Я б завжди використовував env vars для цього ( %programfiles%). Перейменування дійсно не працює. Можливо, я можу це зробити з офлайн? Може бути обхідним.
pgampe

ви намагалися запустити команду як адміністратор? Створіть 8.3 ім’я для існуючого каталогу
phuclv

Звичайно. Це не спрацювало.
пгампе

Відповіді:


5

Як я сказав у своєму коментарі ... Єдиний спосіб, коли я знаю, як Windows збирається повторно генерувати коротке ім'я, - це скопіювати каталог та видалити оригінал. (недоступно для каталогу "Файли програм".)

Найкраще було б змінити сценарій, щоб використовувати довгі імена файлів та папок. Якщо сценарій використовує, PROGRA~1він матиме проблеми з установками, де диск був клонований, таким чином, каталоги, куди скопійовано назад. Наприклад, якщо ProgramDataспочатку скопійовано на диск, він буде названий PROGRA~1і Program Filesбуде названий PROGRA~2.

Наразі існує можливість збереження сценаріїв :

Ви можете створити каталог-перехід від PROGRA~1до C:\Program Files. Таким чином сценарії продовжують працювати, і ви маєте час їх змінити.

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

Вихід 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.

Хороша ідея скористатися стрибком з каталогу :)
pgampe

Чи вносяться зміни mklinkпостійні або вони просто працюють у пакетному сценарії, який виконується? Вибачте, у мене недостатньо інформації про символьні посилання та вузли.
Аліреза Мохамаді

@AlirezaMohamadi Зміни, внесені за допомогою, mklinkє постійними. Так само, як mkdir.
Рік

9

Для визначення коротких імен (8dot3) для програмних файлів виконайте наступне:

  1. Перезавантажте комп'ютер
  2. при запуску завантаження в safemode із запитом cmd (F8 на моєму комп’ютері)
  3. Увійти
  4. із запиту cmd введіть наступні cmds

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

Тепер вам слід побачити коротке ім'я, визначене для програмних файлів. Якщо ви хочете, поверніть поведінку 8dot3name назад до початкового налаштування, яке було повернуто запитом cmd.


2
FWIW - Мені не потрібно було перезавантажувати комп’ютер для цього. Крім того, ви можете вибірково вмикати / відключати 8.3 на різних дисках. Місцезнаходження реєстру для всіх цих параметрів - HKLM: \ System \ CurrentControlSet \ Control \ FileSystem \ Ntfs *. Дивіться support.microsoft.com/en-us/kb/121007
Coruscate5

Так, я просто залишився там, де був і робив:
Майк Муньє,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.