Обмеження на довжину шляху у назві файлів Windows до 260 знаків
Чи багато хто мав проблему що не може скопіювати, або відкрити файл у програмі, хоча бачимо що ось він є.
Чому таке стається ?
Деяку відповідь можна знайти у документах Microsoft : Naming Files, Paths, and Namespaces
Maximum Path Length Limitation
In the Windows API (with some exceptions discussed in the following paragraphs), the maximum length for a path is MAX_PATH, which is defined as 260 characters. A local path is structured in the following order: drive letter, colon, backslash, name components separated by backslashes, and a terminating null character. For example, the maximum path on drive D is “D:\some 256-character path string
" where " " represents the invisible terminating null character for the current system codepage. (The characters < > are used here for visual clarity and cannot be part of a valid path string.) .
Note File I/O functions in the Windows API convert “/” to “" as part of converting the name to an NT-style name, except when using the “\?" prefix as detailed in the following sections.
The Windows API has many functions that also have Unicode versions to permit an extended-length path for a maximum total path length of 32,767 characters. This type of path is composed of components separated by backslashes, each up to the value returned in the lpMaximumComponentLength parameter of the GetVolumeInformation function (this value is commonly 255 characters). To specify an extended-length path, use the “\?" prefix. For example, “\?\D:\very long path”.
Обмеження на максимальну довжину шляху
У Windows API , (з деякими винятками , обговорюваних в наступних пунктах) , максимальна довжина для шляху визначена у MAX_PATH , яка становить 260 символів. Локальний шлях структурований в наступному порядку: буква диска , двокрапка , коса риса , компоненти імені розділяються зворотного косою риси , і порожній символ завершення. Наприклад , максимальна шлях на диску D є “D:\деякий 256 - символьний рядок шляху
Виходячи з цього для обходу обмеження треба використати для щляху “C:\Users\Public\Documents\Тека для 2010\Палаш\001-555555555555555556-6666666666666666666\002-322565666565656565\003-6556ew5ew6e565we53s\9499494994-ddsdssds\5445454545\343343434332244\деякі документи\ще щось\документ для роботи при використанні у мовах збільшеного ризику використання тютюнопаління а ще чогось та іншого чогось таке собі довге ім’я для створення іміджу компанії.txt” - довжина шляху складає 382 знаки.
Отримаю збережену частину назви текстового файлу “документ для роботи при використанні у мовах з більше”, навіть без типу. Що складає сумарну довжину у 260 знаків.
Якщо створити файл окремо у іншій теці, і спробувати перемістити сюди бачимо наступну помилку.

Шлях призначення занадто довгий
Але як використати довгий шлях ?
Спроба використати такий запис з префіксом \?\ не дає користі при використанні Explorera Windows 7 .
“\?\C:\Users\Public\Documents\Тека для 2010\Палаш\001-555555555555555556-6666666666666666666\002-322565666565656565\003-6556ew5ew6e565we53s\9499494994-ddsdssds\5445454545\343343434332244\деякі документи\ще щось\документ для роботи при використанні у мовах збільшеного ризику використання тютюнопаління а ще чогось та іншого чогось таке собі довге ім’я для створення іміджу компанії.txt”
А ось за допомогою програми FAR 2.0.1420 х64 я таки скопіював задовгий файл!
Як з використанням префіксу \?\ так і без нього.

Використання у FAR довгих шляхів у імені файлу
Тепер і Explorer Windows 7 показує цей файл, але працювати з ним не дає.

Файл скопійовано іншою програмою, але відображається.
Переглянемо як працюють у таких умовах інші програми, наприклад резервного копіювання та синхронізації.
Програма резервного копіювання Cobian Backup 11:
Використана тіньова копія, тека з архівована до архіву 7-Zip.
Перевіримо зміст архіву. Усе успішно.
Додатково перевірив що і 7-Zip самостійно працює з довгими шляхами.
Тепер черга за програмою “FreeFileSync 6.5”. У описах програми заявлено: “Support long path names > 260 characters”

Спроба видалити файли з використаннями “кошика”, дає помилку

Відновлення фалів до теки з довгим шляхом.
Що ж робити зі звичайним Explorer Windows 7 ?
- Не використовувати довгі назви.
- Скоротити назви як файлів, так і вкладеності тек, або перемістити до тек з коротшою назвою.
- Використати символічні посилання файлової системи NTFS:
3.1. Команда mklink
3.2. Програма FAR, Alt-F6, створення посилання

FAR, Alt-F6, створення посилання

Після створення посилання, тека доступна для звичайної роботи за новим коротким шляхом “C:\temp\link\ще щось”
Посилання за темою:






