%3F.png)
У меня проблема с короткими именами 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) для файлов программы, выполните следующие действия:
- Перезагрузить компьютер
- при загрузке запустите в безопасном режиме с командной строкой (F8 на моем компьютере)
- Авторизоваться
из командной строки введите следующую команду
fsutil 8dot3name query fsutil behavior set disable8dot3 0 fsutil file setshortname "Program Files" PROGRA~1 dir /X
Теперь вы должны увидеть сокращенное имя, определенное для файлов программы. Если хотите, установите поведение 8dot3name обратно к исходной настройке, которая была возвращена запросом cmd.