Как принудительно сгенерировать короткое имя (8dot3)?

Как принудительно сгенерировать короткое имя (8dot3)?

У меня проблема с короткими именами windows windows. Иногда короткие имена не генерируются для "Program Files" и "Program Files (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..

решение1

Как я уже сказал в своем комментарии... Единственный известный мне способ, как Windows собирается повторно сгенерировать короткое имя, — это скопировать каталог и удалить оригинал. (Это невозможно для каталога «Program Files»).

Лучше всего изменить скрипт, чтобы использовать длинные имена файлов и папок. Если скрипт использует , 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.

решение2

Чтобы определить короткие имена (8dot3) для файлов программы, выполните следующие действия:

  1. Перезагрузить компьютер
  2. при загрузке запустите в безопасном режиме с командной строкой (F8 на моем компьютере)
  3. Авторизоваться
  4. из командной строки введите следующую команду

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

Теперь вы должны увидеть сокращенное имя, определенное для файлов программы. Если хотите, установите поведение 8dot3name обратно к исходной настройке, которая была возвращена запросом cmd.

Связанный контент