Ограничение длины имени файла - как бороться?
Граждане, я поставлен в тупик маразмом семерки.. Какого черта в ней стоят примитивные ограничения длины имени файла?
К примеру, есть фильмы в коллекции. Один из них - Диск 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 При таком раскладе файл открыть невозможно ни для воспроизведения, ни для того, чтобы даже его попросту переименовать. Приходится имя папки указывать очень короткое, тогда файл становится доступен для воспроизведения и прочих действий.. Как можно бороться с этим? |
Диск Д отформатирован в какую файловую систему - FAT что-ли?
|
Вложений: 1
НТФС
Был бы фат - не спрашивал бы... |
Глючат таким образом только файлы с расширением .mkv?
|
Проверил - не только...
|
Цитата:
Какая длина имени файла допустима? Цитата:
Цитата:
|
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 |
Вложений: 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" ??? Если возможно то как ??? |
|
12345qwerty12345, «самодельные изменения» были внесены много лет назад.
Naming Files, Paths, and Namespaces (Windows) — от слов: Цитата:
|
Основная статья:
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/ |
timotv, к сожалению, в Win 10 оно снято криво (MS любит это). При попытке создать три папки, где каждая длиной в 100 символов, проводник ОС обрезает последнюю в принудительном порядке. Если же создать их в FAR Manager, то при попытке создавать далее в проводнике, ОС предлагает повысить права и дальше делает вид, что этого не предлагала. Попытку запустить из такой папки файл DOCX ОС игнорирует. Может нужно ещё что-то подправить в ОС?
Проверял на Win 10 Pro x64 Ru (версия 1703, сборка 15063.502), в групповой политике включён параметр «Включить длинные пути Win32» и в реестре параметр «LongPathsEnabled» равен «1». |
Кто-нибудь разобрался с тем как отключить ограничение? В винде всё сделал, но оно продолжает быть, и ладно если бы нужно было просто скопировать, но нужно именно пользоваться файлами, у которых путь больше 260 символов. 19 год на дворе, а такую мелочь не исправили(
|
johonson87, попробуйте написать на официальном форуме. Я полагаю, MS наплевать на нас, но вдруг, есть решение или у кого-то включится мозг?
|
Кое что изменилось (в 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-