Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   [решено] Ограничение длины имени файла - как бороться? (http://forum.oszone.net/showthread.php?t=206669)

flower 11-05-2011 19:35 1674516

Ограничение длины имени файла - как бороться?
 
Граждане, я поставлен в тупик маразмом семерки.. Какого черта в ней стоят примитивные ограничения длины имени файла?
К примеру, есть фильмы в коллекции. Один из них -

Диск D:, папка Films, название папки с фильмом -

Святые из бундока 2 - День всех святых @ The Boondock Saints II - All Saints Day (2009, боевик, триллер, драма, комедия, криминал, BD-REMUX 1080 P)
В ней находятся материалы разного рода (постеры и т.п.), а также сам фильм с названием
Святые из бундока 2 - День всех святых @ The Boondock Saints II - All Saints Day (2009, боевик, триллер, драма, комедия, криминал, BD-REMUX 1080 P) video.mkv

При таком раскладе файл открыть невозможно ни для воспроизведения, ни для того, чтобы даже его попросту переименовать. Приходится имя папки указывать очень короткое, тогда файл становится доступен для воспроизведения и прочих действий..
Как можно бороться с этим?

Phoenix 11-05-2011 20:04 1674532

Диск Д отформатирован в какую файловую систему - FAT что-ли?

flower 11-05-2011 20:12 1674536

Вложений: 1
НТФС
Был бы фат - не спрашивал бы...

Phoenix 11-05-2011 20:21 1674540

Глючат таким образом только файлы с расширением .mkv?

flower 11-05-2011 20:35 1674550

Проверил - не только...

Morpheus 11-05-2011 21:11 1674563

Цитата:

Цитата flower
Как можно бороться с этим? »

Только укорачиванием имён. Обходных путей не существует.
Какая длина имени файла допустима?

Цитата:

Цитата flower
я поставлен в тупик маразмом семерки.. »

А встречали больше? Filename - Wikipedia, the free encyclopedia
Цитата:

Цитата flower
Какого черта в ней стоят примитивные ограничения длины имени файла? »

Имена файлов в разных системах

student_j 12-02-2013 05:05 2088417

Morpheus,
В теме стоит "решено", но я бы подкорректировал вот в каком смысле.

В ситуации аналогичной flower, я для эксперимента (был повод) скачал mp3 файл с длинным именем по о-о-чень длинному пути (полный путь больше 400 символов), причём uTorrent написал "Ошибка: Write to disk: Системе не удаётся найти указанный путь", но файл распределил и сохранил!. Кликнул я в него и он стал проигрываться! Но вот скопировать такую структуру или файл куда-нибудь даже в сторону уменьшения (но более 260 символов) общего пути или открыть в какой-нибудь программке через диалог "Open file" может не получиться.
См.
Ваша ссылка Какая длина имени файла допустима? даёт неточную/неполную информацию, точнее написано вот здесь Naming Files, Paths, and Namespaces
Ведь есть функции API с UNICODE версиями, обидно, что explorer их, судя по всему не использует. А выглядит это в описанной ситуации как реальный глюк, я бы даже сказал - маразм - файл-то можно использовать, но...
Хотя общая рекомендация остаётся - не используйте длинные пути.

Ваше мнение?

ps. У меня Windows 7x64 Pro Rus SP1

12345qwerty12345 17-03-2016 20:19 2617200

Вложений: 3
В теории ограничение на длину имени файла или папки в NTFS составляет 255 символов, но на практике Windows API ограничивает до 244 символов (мне удалось создать).
В теории ограничение на длину пути к файлу или папке в NTFS составляет 32767 символов, но на практике Windows API ограничивает до 245 символов (мне удалось создать).


ОГРАНИЧЕНИЯ НА ДЛИНУ ИМЕН И ДЛИНУ ПУТИ ФАЙЛОВ И ПАПОК В WINDOWS API
Понятия «путь» и «имя файла»
Очень часто в компьютерной литературе используются термины «путь» и «имя файла» под разными значениями. Обычно под словом «путь» понимают адрес или расположение файла, т. е. диск, папка и подпапки в которых расположен файл. Однако Microsoft и другие считают, что в путь к файлу входит не только его расположение но и само имя файла. А некоторые подразумевают под словом «путь» только имена файла и папок, в которых он расположен, без указания диска. Некоторые пользователи полагают, что «имя файла» не включает расширение. В данной статье расширение всегда является частью имени файла. На примере ниже синим цветом выделен путь к файлу, а красным имя файла.
X:\папка\подпапка\файл.расширение
Зарезервированные символы и имена
Большинство часто употребляемых символов разрешается использовать в имени файла. Имя файла не должно содержать „<” (знак меньше), „>” (знак больше), „:” (двоеточие), „«” (двойные кавычки), „/” (слеш), „\” (обратный слеш), „|” (вертикальная черта), „?” (вопросительный знак), „*” (звездочка), а также не может заканчиваться точкой или пробелом. Файлы также нельзя называть зарезервированными именами устройств: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7,COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, и LPT9.
Ограничения на длины имен файлов и путей
Существуют ограничения на длину имени файла и на длину пути. Абсолютное ограничение длины имени файла вместе включая путь к нему равно 260 символам. Этот предел называют термином MAX_PATH. На самом же деле на практике пределы для имен еще меньше из-за ряда других ограничений. Например, каждая строка на конце должна содержать так называемый нулевой символ, который обозначает конец строки. Несмотря на то, что маркер конца строки не отображается, он учитывается как отдельный символ при подсчете длины, а значит остается 259 символов доступных для имени файла и пути к нему. Первые три символа в пути используются для обозначения диска (например, C:\). Это уменьшает предел для имен папок, подпапок и файла до 256 символов.
На имя объекта (папки или файла) наложено ограничение длины 255 символов. Этот предел действителен только, если объект не расположен внутри папки. Так как при расположении объекта внутри папки, сумма длин всех папок в которых он расположен, разделителей и имени объекта ограничена 256 символами, то предел длины самого имени объекта меньше 255 символов.

Как видно из статьи весь корень зла не в файловой системе а в Windows API.
Если ограничение на длину имени файла или папки в Windows API на практике в 244 символа меня вполне устраивает, то ограничение на длину пути к файлу или папке в Windows API на практике в 245 символов ни меня ни большинсто пользователей не устраивает.
У меня риторический вопрос к программистам :
Можно ли внести самодельные изменения в Windows API после включения "Службы активации Windows" через "Компоненты Windows" ???
Если возможно то как ???

Vadikan 17-03-2016 21:28 2617230

Как обойти ограничение на длину пути при создании или копировании файла

Iska 17-03-2016 22:18 2617246

12345qwerty12345, «самодельные изменения» были внесены много лет назад.

Naming Files, Paths, and Namespaces (Windows) — от слов:
Цитата:

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".
и ниже.

timotv 30-03-2017 18:12 2724451

Основная статья:
https://habrahabr.ru/post/307186/

Для обхода ограничения необходимо:

1. Использовать FAR
https://www.outsidethebox.ms/16798/#comment-26083

2. Использовать Total Commander

3. Использовать Double Commander начиная с версии 0.8.0
http://doublecmd.sourceforge.net/for...p=20180#p20181
http://doublecmd.sourceforge.net/snapshots/
https://sourceforge.net/p/doublecmd/wiki/Download/

4. Либо виндовскую комманду robocopy


В Windows 10 version 1607 (вышла 02.08.2016) это ограничение снято, но нужно активировать в реестре :
HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)
https://msdn.microsoft.com/en-us/lib...85).aspx#paths
https://habrahabr.ru/post/307186/

Andrey_Vladimirovich 03-08-2017 01:34 2755887

timotv, к сожалению, в Win 10 оно снято криво (MS любит это). При попытке создать три папки, где каждая длиной в 100 символов, проводник ОС обрезает последнюю в принудительном порядке. Если же создать их в FAR Manager, то при попытке создавать далее в проводнике, ОС предлагает повысить права и дальше делает вид, что этого не предлагала. Попытку запустить из такой папки файл DOCX ОС игнорирует. Может нужно ещё что-то подправить в ОС?

Проверял на Win 10 Pro x64 Ru (версия 1703, сборка 15063.502), в групповой политике включён параметр «Включить длинные пути Win32» и в реестре параметр «LongPathsEnabled» равен «1».

johonson87 12-09-2019 13:10 2887612

Кто-нибудь разобрался с тем как отключить ограничение? В винде всё сделал, но оно продолжает быть, и ладно если бы нужно было просто скопировать, но нужно именно пользоваться файлами, у которых путь больше 260 символов. 19 год на дворе, а такую мелочь не исправили(

Andrey_Vladimirovich 12-09-2019 13:22 2887614

johonson87, попробуйте написать на официальном форуме. Я полагаю, MS наплевать на нас, но вдруг, есть решение или у кого-то включится мозг?

Andrey_Vladimirovich 22-07-2021 15:46 2962640

Кое что изменилось (в Win 10). Теперь проводник в состоянии создать длинный путь и с ним работать, но всё равно это как-то криво реализовано. Далее, примеры с запуском различных файлов расположенных в пути, длина которого превышает 300 символов, с помощью проводника в Win10 x64 Pro 20H2, сборка ОС 19042.1110. Например, если я запускаю файл ассоциированный с Блокнотом (или выбираю «Открыть с помощью»), то проблем нет, файл исправно открывается. А вот, если попытаться открыть PNG-файл в Paint, то ничего не происходит, никаких сообщений, просто игнорирование события. Самим Paint’ом можно войти в папку и выбрать файл, но открывать его он не будет, без каких либо сообщений. Похожая ситуация при попытке открыть HTML-файл в браузере Edge или FireFox. Но, оказалось, что, если самим FireFox зайти в папку то файл исправно открывается (как то же самое сделать в Edge я так и не понял). Notepad++ отказывается работать с таким путём. Им самим можно туда зайти и выбрать файл, но он его не откроет без каких либо сообщений. Если попытаться открыть файл ассоциированный с LibreOffice Writer, то ничего не происходит, а вот он сам его исправно открывает. В общем, не всегда понятно, кто виноват в невозможности открыть файл в программе, проводник, другие части ОС или сама программа? Что тут скажешь, MS во всей красе.


Время: 21:37.

Время: 21:37.
© OSzone.net 2001-