Остановка слишком длинных имен файлов в Windows Server 2003

Когда Sun имел симпатичные логотипы на вершине их 1U серверы, коллега серьезно рассматривал покупку той и монтирование его на стене ("нижняя часть" сервера, смонтированного плоский на стене, повернутой, таким образом, это было похоже на ромб) как домашний сервер / арт-инсталляция. В конце он не сделал этого из-за шума вентилятора. Выглядел бы прохладным хотя =).

6
задан 9 June 2009 в 17:16
3 ответа

Поддержка файловой системы NTFS соединяет каналом приблизительно до 32 767 символов Unicode с каждым компонентом контура (каталог или имя файла) до 255 символов в длину. Но Windows Explorer и большинство других приложений Win32 только поддерживают 255 символов в пути.

Вы могли использовать robocopy, бесплатный инструмент от Microsoft, которая полностью поддерживает имена длинного тракта (дольше, чем 256 символов). Здесь документируется, как использовать robocopy, перечисляющий все переключатели и опции.


Вот выборка от статьи о MSDN, который объясняет почему много предельных траекторий программ 255 символам:

В Windows API (за некоторыми исключениями, обсужденными в следующих параграфах), максимальная длина для пути является MAX_PATH, который определяется как 260 символов. Локальный путь структурирован в следующем порядке: буква диска, двоеточие, обратная косая черта, компоненты, разделенные обратными косыми чертами и завершающимся нулевым символом. Например, максимальный путь на диске D

    D:\some 256 character path string<NUL>

где "" представляет невидимый нулевой символ завершения для кодовой страницы существующей системы. (Символы <> используются здесь для визуальной ясности и не могут быть частью допустимой строки пути.)

4
ответ дан 3 December 2019 в 00:27
  • 1
    " большинство других приложений Win32 только поддерживает 255 символов в path" - который включает серверы на 64 бита также? –  Tubs 9 June 2009 в 15:34
  • 2
    Я протестировал это использование Windows Explorer на Vista 64. Я создал 100 символы длинная папка и sub папка с 100 символами. Проводник повредил название третьей папки, которая является знаком, что пути обрабатываются тот же путь как на машинах на 32 бита. –  splattne 9 June 2009 в 15:45

См. http://www.ratsauce.co.uk/notablog/LongFileNames.asp

это - одно из более глупых проектных решений в семействе Windows NT. Насколько я знаю, что нет никакого способа предотвратить пользователей, создающих длинные имена файлов.

МЛАДШИЙ

2
ответ дан 3 December 2019 в 00:27

Я имел подобную проблему при автоматизации некоторой параметризованной чистки на группе и размещаю диски.

Я записал пользовательское приложение C#, чтобы сделать это, но обработать длинные имена файлов было необходимо использовать версию Unicode API Win32 а не обычную версию ASCII, которой упомянули выше ограничения. Это также означает снабжать префиксом строку пути \? \, если это отображается или \? \UNC\, если это через UNC.

Я могу дать Вам некоторые примеры кода или дальнейшую информацию, если Вы хотите.

1
ответ дан 3 December 2019 в 00:27

Теги

Похожие вопросы