Интерфейс - [решено] Ограничение длины имени файла - как бороться?

Ответить
 • Просмотры: 1
Аватара пользователя
flower

Интерфейс - [решено] Ограничение длины имени файла - как бороться?

Сообщение flower »

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

К примеру, есть фильмы в коллекции. Один из них -



Диск 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



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

Как можно бороться с этим?
Аватара пользователя
timotv

Re: Интерфейс - [решено] Ограничение длины имени файла - как бороться?

Сообщение timotv »

Основная статья:

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/
Аватара пользователя
Phoenix

Re: Интерфейс - [решено] Ограничение длины имени файла - как бороться?

Сообщение Phoenix »

Диск Д отформатирован в какую файловую систему - FAT что-ли?
Аватара пользователя
Phoenix

Re: Интерфейс - [решено] Ограничение длины имени файла - как бороться?

Сообщение Phoenix »

НТФС

Был бы фат - не спрашивал бы...
Вложения

[Расширение png было запрещено, вложение больше недоступно.]

Аватара пользователя
Phoenix

Re: Интерфейс - [решено] Ограничение длины имени файла - как бороться?

Сообщение Phoenix »

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

Re: Интерфейс - [решено] Ограничение длины имени файла - как бороться?

Сообщение Morpheus »

Цитата flower:



Как можно бороться с этим?
Интерфейс - [решено] Ограничение длины имени файла - как бороться?




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

Какая длина имени файла допустима?




Цитата flower:



я поставлен в тупик маразмом семерки..
Интерфейс - [решено] Ограничение длины имени файла - как бороться?




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



Цитата flower:



Какого черта в ней стоят примитивные ограничения длины имени файла?
Интерфейс - [решено] Ограничение длины имени файла - как бороться?




Имена файлов в разных системах
Аватара пользователя
Morpheus

Re: Интерфейс - [решено] Ограничение длины имени файла - как бороться?

Сообщение Morpheus »

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
Аватара пользователя
student_j

Re: Интерфейс - [решено] Ограничение длины имени файла - как бороться?

Сообщение student_j »

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

Re: Интерфейс - [решено] Ограничение длины имени файла - как бороться?

Сообщение 12345qwerty12345 »

В теории ограничение на длину имени файла или папки в 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" ???

Если возможно то как ???
Вложения

[Расширение jpg было запрещено, вложение больше недоступно.]

Ответить

Вернуться в «Microsoft Windows 7»