Длина названия файла excel

  • Remove From My Forums
  • Вопрос

  • Привет!

    Есть такой путь http://10.х.х.х/TestFolder/LongNameFL/ в нем 2 папки: LongNameFL и ДЛФЛКАТАЛО. В этих каталогах лежит пару файлов (различающихся длиной имени), сделанные из этого — Long_FL_DC012345678901234567890123456789001234567890123456789012345678901234567890123456789012345678901234567890123456789012345678900123456789012345678901234567_8901234567890123456789012345678901234567.xlsx

    длина имени файла 207 символов.  Из английского каталога файл открывается нормально, из русского каталога  имя файла нужно обрезать до 166 символов (в имени в этом месте стоит _). 2007 офис не имеет проблем с открытием этих фалов. Система Windows
    7.

    Это баг, фича или ? И какое отношение имеет это к языку каталога?

Ответы

    • Предложено в качестве ответа

      12 января 2011 г. 16:43

    • Помечено в качестве ответа
      maxx-ode
      12 января 2011 г. 17:43
  • Отношение это имеет в основном к кодовой таблице языка. Смысл в том, что у латиницы кодировка использует 7 бит, а у кириллицы — 8. Вот из-за этого и возникает различие. Судя по всему, у вас срабатывает ограничение на длину имени — к сожалению мне никогда
    не приходилось создавать файлы с настолько огромными именами (это банально неудобно), но рискну предположить. что это все-таки фича.


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется «как есть» без каких-либо гарантий
    Follow MSTechnetForum on Twitter

    Посетите Блог Инженеров Доклады на Techdays:
    http://www.techdays.ru/speaker/Vinokurov_YUrij.html

    • Помечено в качестве ответа
      Daniil KhabarovModerator
      27 октября 2010 г. 6:45

xuor007

0 / 0 / 0

Регистрация: 21.03.2017

Сообщений: 35

1

Excel

27.03.2021, 16:12. Показов 4821. Ответов 27

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Доброго времени суток! Некоторое время назад столкнулся с проблемой, что в таблицах Excel невозможно редактировать файлы путь и имя которых превышает 255 символов.
Прочитал на сторонних формах о «костыле» — создании виртуального диска, для сокращения пути к файлу.
Хочу это автоматизировать.
К сожалению, мои изыскания не

привили

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

Попытка 1:
ЛКМ загружается до открытия нужного файла, но к сожалению в коллекции Workbook только файл «PERSONAL.XLSB».
Файла, который должен открыться после загрузки ЛКМ в этой коллекции нет.

Visual Basic
1
2
3
4
5
6
7
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
 
   For Each w In Application.Workbooks
       MsgBox (w.FullName)
   Next w
 
End Sub

Попытка 2:
Получив hwnd окна по WMI добраться до названия файла. К сожалению, также не нашёл

Попытка 3:
Возможно где-то в переменной среде Excel есть эта информация. Но функция Environ() такой информации не дала.

Идея: Если ни одним способом нет возможности получить информацию, мне требуемую, полагаю возможно написать программу-посредник и назначить на неё открытия файлов excel.

Жду ответов и заранее благодарю за любую помощь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

27.03.2021, 16:12

Ответы с готовыми решениями:

Длинные имена файлов в Excel
Доброго времени суток! Некоторое время назад столкнулся с проблемой, что в таблицах Excel…

Длинные имена файлов
вот например есть файл с длинным именем ~150 знаков если попробовать скопировать его в другую папку…

Длинные имена файлов
Здравствуйте. Подскажите, можно ли решить проблему. Решил систематизировать все файлы на рабочем…

Длинные имена исходных файлов
Доброго времени суток.
Опишу суть проблемы: поймал в систему какую-то гадость. Перед тем, как…

27

Модератор

Эксперт функциональных языков программированияЭксперт Python

34707 / 19228 / 4039

Регистрация: 12.02.2012

Сообщений: 32,187

Записей в блоге: 13

28.03.2021, 07:45

2

Вопрос совершенно непонятен: строку длиной более 255 символов нельзя корректировать в ячейке? Можно. Размер строки (даже в старом офисе) может достигать тысяч символов… Приведите пример того, что не получается. И что такое ЛКМ?



0



0 / 0 / 0

Регистрация: 21.03.2017

Сообщений: 35

28.03.2021, 13:40

 [ТС]

3

Catstail, видимо Вы невнимательно прочитали тему и само сообщение. Проблема в том, что при попытки сохранить или отредактировать файл, путь и имя которого превышает 255 символов, программа Excel сообщает об ошибке(фото во вложении).

Под аббревиатурой ЛКМ я подразумевал Личная Книга Макросов.

P.s. Благодарю за исправление орфографической ошибки

Миниатюры

Длинные имена файлов в Excel
 



0



811 / 465 / 181

Регистрация: 09.03.2009

Сообщений: 1,577

28.03.2021, 13:49

4

https://qastack.ru/superuser/1… can-handle говорит:

«Классический» предел 260 символов: drive letter+ :+ 255 characters of filename+ (или для округления) + , null terminatorкак сказано в других ответах

Однако реальный внутренний предел 32767 символов , которые могут быть достигнуты путем добавления , \?чтобы получить полный путь

Windows API имеет много функций, которые также имеют версии Unicode, чтобы разрешить путь расширенной длины для максимальной общей длины пути 32 767 символов. Этот тип пути состоит из компонентов, разделенных обратной косой чертой, каждая из которых соответствует значению, возвращенному в lpMaximumComponentLengthпараметре GetVolumeInformationфункции (обычно это значение составляет 255 символов). Чтобы указать путь расширенной длины, используйте «\?»префикс. Например, «\?D:very long path».

Если по каким-либо причинам полные пути не могут быть использованы, то к более глубоким каталогам можно обратиться, подключив их к букве диска с помощью subst/ diskpartили создав соединение / символическую ссылку для сокращения пути

Начиная с Windows 10, MAX_PATHограничение также было удалено, хотя не по умолчанию

Начиная с Windows 10, версия 1607, MAX_PATHограничения были удалены из общих функций файлов и каталогов Win32. Тем не менее, вы должны подписаться на новое поведение.



1



0 / 0 / 0

Регистрация: 21.03.2017

Сообщений: 35

28.03.2021, 14:42

 [ТС]

5

Zeag, благодарю за дополнение.

Согласно комментариям к этой статье разные версии ОС Windows имеют разное ограничение MAX_PATH. Хотелось бы написать кроссплатформенную утилиту. Правильно ли я понял, что максимальный путь и имя файла в ОС Windows XP SP3 составляет 250 символов?

Возможно Вы подскажите, как получить имя и путь открываемого файла, в программе Excel, до его загрузки и возникновения ошибки?



0



Zeag

811 / 465 / 181

Регистрация: 09.03.2009

Сообщений: 1,577

28.03.2021, 14:54

6

Кроссплатформенную вряд ли, на MacOS все будет иначе. )) Вероятно, вы имели в виду — под все версии Windows? Попробуйте указывать перед файлом «\?»префикс. Например, «\?D:very long path».

У меня этот вариант (7/64, офис 2007) не прошел, но выкрутился так:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub xtest()
   Dim sFN As String, FP As Workbook
   sFN = "C:testsdfksdjfkzxklksdjfkdgifueru8trveruhg7rtyg7rthgt7rhg7nsdjf38rewsmc3485438wokdow3853fiwj38375837gsre48t784iefjvci4eut834fcvmweit7348u3fidnjed8eryf459t8mi86439sd7435u7s34iu8we6rt43n43u3487r34765s834trh34uf8wr7f34r34u77677634th8y743734hr743ytr74365634th345Стрекоза_7_862_от_31_12_2020_Март_2021.xlsx"
' когда задал так, не прошло ни напрямую, ни с \?
 
' тогда сделал (здесь вручную, но можно автоматизировать): разбил путь на часть, не превышающую 256 знаков,
' и ее посадил на subst (разумеется, нужно найти свободную букву, можно через FSO или еще как), а хвост оставил в имени файла
   Shell "subst Q: C:testsdfksdjfkzxklksdjfkdgifueru8trveruhg7rtyg7rthgt7rhg7nsdjf38rewsmc3485438wokdow3853fiwj38375837gsre48t784iefjvci4eut834fcvmweit7348u3fidnjed8eryf459t8mi86439sd7435u7s34iu8we6rt43n43u3487r34765s834trh34uf8wr7f34r34u776776"
   Set FP = Application.Workbooks.Open(Filename:="Q:34th8y743734hr743ytr74365634th345Стрекоза_7_862_от_31_12_2020_Март_2021.xlsx", Local:=True)
   MsgBox Cells(7, 1)  ' работает!
   Shell "subst Q: /D"
   FP.Close False
   Set FP = Nothing
End Sub



0



0 / 0 / 0

Регистрация: 21.03.2017

Сообщений: 35

28.03.2021, 15:00

 [ТС]

7

Zeag,

Кроссплатформенную вряд ли, на MacOS все будет иначе. ))

Да, прошу прощения, имел ввиду под действующие версии OC Windows)

У меня этот вариант (7/64, офис 2007) не прошел, но выкрутился так

Данный код будет работать, если Вы заранее знаете какой файл будете открывать.
Но как заранее перехватить название открываемого файла, программой Excel, до появления ошибки и выполнить свой код, мне, к сожалению, не известно(



0



811 / 465 / 181

Регистрация: 09.03.2009

Сообщений: 1,577

28.03.2021, 15:10

8

А имена вам кто дает? Dir, FSO? Можно анализировать путь и если он больше 250, то применять такую подстановку. Или они столь длинные пути не отдают?
Вот я сделал dir /s из ком.строки:

Код

 Содержимое папки C:testsdfksdjfkzxklksdjfkdgifueru8trveruhg7rtyg7rthgt7rhg7nsdjf38rewsmc3485438wokdow3853fiwj38375837gsre48t784iefjvci4eut834fcvm
weit7348u3fidnjed8eryf459t8mi86439sd7435u7s34iu8we6rt43n43u3487r34765s834trh34uf8wr7f34r34u776776

28.03.2021  15:08    <DIR>          .
28.03.2021  15:08    <DIR>          ..
28.03.2021  15:08    <DIR>          34th8y743734hr743ytr74365634th345
               0 файлов              0 байт
Имя папки C:testsdfksdjfkzxklksdjfkdgifueru8trveruhg7rtyg7rthgt7rhg7nsdjf38rewsmc3485438wokdow3853fiwj38375837gsre48t784iefjvci4eut834fcvmweit7348
u3fidnjed8eryf459t8mi86439sd7435u7s34iu8we6rt43n43u3487r34765s834trh34uf8wr7f34r34u77677634th8y743734hr743ytr74365634th345 слишком длинно.

Думаю (хотя надо проверить), что даже при переборе по Dir() можно выкрутиться: как длина общего пути (а это собирать через амперсенд) становится 250 или около того — сделать subst и продолжить. Если же берете из ячейки, то сразу видите, сколько длина, вычленяете наибольшую возможную часть и ей subst.



0



xuor007

0 / 0 / 0

Регистрация: 21.03.2017

Сообщений: 35

28.03.2021, 15:21

 [ТС]

9

Zeag,

А имена вам кто дает? Dir, FSO?

Не понял вопроса. Я пытаюсь открыть для редактирования файл Excel, путь которого, включая имя файла, превышает 260 символов и появляется сообщение об ошибке.
Единственный способ, который у меня сработал, это прописать код в процедуру ЛКМ:

Visual Basic
1
2
3
4
5
6
7
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
 
   For Each w In Application.Workbooks
       MsgBox (w.FullName)
   Next w
 
End Sub

Но, к сожалению, из этой процедуры я так и не смог получить путь к файлу, который мне нужен.

Мне известно, что возможно сократить путь к открываемому файлу созданием виртуального диска:
— утилитой subst, для локальных файлов
— утилитой net use, для файлов, которые нужно использовать по сети

Но для этих манипуляций необходимо сначала:
1. Получить имя пути и файла, до его загрузки
2. Проверить длину полного пути(если путь короче 260 символов, то открыть файл; если путь длинее приступить к сокращению)
3. Если путь длинее, закрыть файл; Подключить виртуальный диск; Открыть файл по новому пути
4. После закрытия файла отключить виртуальный диск.

У меня возникли сложности с первым пунктом(



0



Модератор

Эксперт функциональных языков программированияЭксперт Python

34707 / 19228 / 4039

Регистрация: 12.02.2012

Сообщений: 32,187

Записей в блоге: 13

28.03.2021, 15:24

10

Цитата
Сообщение от xuor007
Посмотреть сообщение

что в таблицах Excel невозможно редактировать файлы путь и имя которых превышает 255 символов.

— как это еще можно понять? «В таблицах»… Таблицы состоят из ячеек.

Да, есть удобная штука, называется subst. Позволяет повесть директорию на свободную букву диска.

Возникает вопрос: зачем нужны такие длинные имена?



0



xuor007

0 / 0 / 0

Регистрация: 21.03.2017

Сообщений: 35

28.03.2021, 15:25

 [ТС]

11

Catstail,

— как это еще можно понять? «В таблицах»… Таблицы состоят из ячеек.

Прошу прощения, видимо я не ясно выразился

Visual Basic
1
Возникает вопрос: зачем нужны такие длинные имена?

Производственная необходимость



0



Модератор

Эксперт функциональных языков программированияЭксперт Python

34707 / 19228 / 4039

Регистрация: 12.02.2012

Сообщений: 32,187

Записей в блоге: 13

28.03.2021, 15:28

12

Цитата
Сообщение от xuor007
Посмотреть сообщение

У меня возникли сложности с первым пунктом

— и откуда вы хотите его получить? Имя файла первично. Если вы хотите открыть файл по имени, то имя нужно знать. Разве не так?

Добавлено через 1 минуту
Обычно файлы для открытия получают сканированием директорий…



0



811 / 465 / 181

Регистрация: 09.03.2009

Сообщений: 1,577

28.03.2021, 15:28

13

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

Catstail, чую, дело касается обработки файлов на сетевом ресурсе.



1



0 / 0 / 0

Регистрация: 21.03.2017

Сообщений: 35

28.03.2021, 15:32

 [ТС]

14

Catstail,
Открывая файл, возможно, делаются какие-то записи открываемого файла:
1. в переменную среду Excel;
2. в реестр;
3. в hnwd окна Excel;
4. возможно куда-то ещё.
Мне это не известно, затем и обратился к помощи форумчан.

В данный момент пишу программу-посредник, которая будет запускаться при открытии файлов xls, но мне не нравится это решение



0



Catstail

Модератор

Эксперт функциональных языков программированияЭксперт Python

34707 / 19228 / 4039

Регистрация: 12.02.2012

Сообщений: 32,187

Записей в блоге: 13

28.03.2021, 15:36

15

Цитата
Сообщение от xuor007
Посмотреть сообщение

Открывая файл, возможно, делаются какие-то записи открываемого файла:

ох… — ничего такого не делается. Я повторяю вопрос: откуда берется имя файла, который вы хотите открыть? Непонятно?

Visual Basic
1
        Set wb = Workbooks.Open(Имя_файла) ' откуда у вас берется это имя?

Добавлено через 59 секунд

Цитата
Сообщение от xuor007
Посмотреть сообщение

в hnwd окна Excel;

— это сильно!



0



0 / 0 / 0

Регистрация: 21.03.2017

Сообщений: 35

28.03.2021, 15:47

 [ТС]

16

Zeag,

чую, дело касается обработки файлов на сетевом ресурсе

файл находиться локально

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

Макроса, в данный момент, нет, хотелось бы его написать) Файл создается не с помощью Excel, он создается средствами ОС Windows 10 путем копирования из другого каталога. Сама OC Windows 10 не выдает ошибку при копировании и создании этих файлов. Ошибка возникает, только при их открытии

Добавлено через 2 минуты
Catstail,

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

Добавлено через 7 минут
Catstail,

ох… — ничего такого не делается. Я повторяю вопрос: откуда берется имя файла, который вы хотите открыть? Непонятно?

Постараюсь описать процесс создания файла максимально доступно:
1. В проводнике я открываю директорию C:testsdfksdjfkzxklksdjfkdgifueru8trveruhg7rtyg7 rthgt7rhg7nsdjf38rewsmc3485438wokdow3853fiwj38375 837gsre48t784iefjvci4eut834fcvm
weit7348u3fidnjed8eryf459t8mi86439sd7435u7s34iu8 we6rt43n43u3487r34765
2. Копирую файл, находящийся там(s834trh34uf8wr7f34r34u776776.xlsx), в буфер обмена
3. Создаю директорию C:testsdfksdjfkzxklksdjfkdgifueru8trveruhg7rtyg7 rthgt7rhg7nsdjf38rewsmc3485438wokdow3853fiwj38375 837gsre48t784iefjvci4eut834fcvm
weit7348u3fidnjed8eryf459t8mi86439sd7435u7s34iu8 we6rt43n43u3487r347652
4. Вставляю файл в созданную мною директорию.

Повторюсь, мне крайне важно сохранить структуру папок, поэтому их имена, как и имена файлов, я не могу сократить



0



малоболт

1143 / 442 / 193

Регистрация: 30.01.2020

Сообщений: 1,095

28.03.2021, 16:03

17

Цитата
Сообщение от xuor007
Посмотреть сообщение

Ошибка возникает, только при их открытии

Ошибка не связана с Excel. Сделайте .txt файлы такого же длинного наименования и попытайтесь открыть. Так что задача не пытаться что-то изобразить на VBA, а сделать так, чтобы при открытии файлов, до того, как по расширению будет распознано, что его надо открывать Excel’ем, или чем-то другим — перед именем подставлялся префикс

Цитата
Сообщение от Zeag
Посмотреть сообщение

\?



0



0 / 0 / 0

Регистрация: 21.03.2017

Сообщений: 35

28.03.2021, 16:08

 [ТС]

18

Punkt5,

Ошибка не связана с Excel. Сделайте .txt файлы такого же длинного наименования и попытайтесь открыть

Вы не правы. Переименовал расширение файла на .txt, блокнот открыл без проблем
Попробовал переименовать расширение на .doc, Word, также, открыл без проблем



0



Punkt5

малоболт

1143 / 442 / 193

Регистрация: 30.01.2020

Сообщений: 1,095

28.03.2021, 16:12

19

Если у вас такая фигня только с файлами Excel, можно попробовать сделать bat-файл типа:

Windows Batch file
1
cmd /C "START "" /I "C:Program FilesMicrosoft OfficeOFFICE11excel.exe" \?%1"

где вместо C:Program FilesMicrosoft OfficeOFFICE11excel.exe укажите полный путь к вашему excel.exe.
И переназначьте открывание всех файлов с расширениями .xls* на этот батник.
Ну, или какой-нибудь аналогичный скрипт на .vbs, .js, PowerShell, autoit. Как понимаю, правка реестра не рассматривается, поскольку хочется распространяемого решения.



0



0 / 0 / 0

Регистрация: 21.03.2017

Сообщений: 35

28.03.2021, 16:14

 [ТС]

20

Punkt5,

Если у вас такая фигня только с файлами Excel, можно попробовать сделать bat-файл типа

В данный момент пишу программу-посредник, которая будет запускаться при открытии файлов xls, но мне не нравится это решение



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

28.03.2021, 16:14

Помогаю со студенческими работами здесь

Длинные имена файлов в глубине папок
Помогите решить проблему, это касаеться ОС в целом, у меня расположена папка в самом начале…

Скрипт html в pdf не принимает длинные имена файлов
Выдает ошибку WinError206, если длина файла большая, помогите исправить.

import pdfkit
import…

Укоротить длинные имена до размера K символов, а те имена, которые короче K символов дополнить восклицательными знаками
Дан список из N имён. Необходимо укоротить длинные имена до размера K символов, а те имена, которые…

Длинные имена
Добрый вечер!
Понадобилось перейти на 12.04 с 13.04, но я в шоке, что файлы с home каталога не…

Длинные имена таблиц в SQL запросах
Каким образом использовать длинные имена таблиц в SQL запросах состоящие из нескольких слов и…

Создать файл, содержащий имена всех файлов системы, созданных в текущем месяце, имена пользователей, их создавших
Через командную строку необходимо:
Создать файл, содержащий имена всех файлов системы, созданных в…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

20

Категория:
Фундаментальные статьи
– Автор:
Игорь (Администратор)

Вы когда-нибудь сталкивались с сообщением об ошибке в Windows, в котором говорилось бы о не возможности скопировать (переместить) файл и о том, что имя одного из файлов слишком большое? Если да, то вы, наверное, задавались вопросом почему такое сообщение появилось (пример ниже на картинке). В данной статье будут объяснены особенности и тонкости ограничений, которые накладываются на длину имени файла в Windows.

Ограничение длины файлов в Windows особенности и тонкости

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

Примечание: Если вы не знали, то в большинстве файловых систем каталог — это разновидность файла, но с нулевым размером данных.

Существует множество различных файловых систем, каждая из который по-своему определяет структуру имени файла, включая способ построения пути к файлу. К примеру, на небольших usb устройствах хранения данных, обычно, используется система FAT32. А на оптических дисках (CD/DVD) обычно используется UDF или ISO 9660. На системных дисках последних ОС Windows используется файловая система NTFS, которая и станет предметом данной статьи (как наиболее распространенная для Windows).

Примечание: К примеру, на системных дисках с Windows XP, часто, использовалась файловая система FAT32. Однако, у нее был существенный (для сегодняшнего времени) недостаток — это ограничение на максимальный размер файла в 4 Гб. NTFS же не имеет такого ограничения.

Существует некоторая путаница в цифрах максимальной длины имени файла в файловой системе NTFS, которую вы можете обнаружить в различных источниках. Для начала, есть абсолютный предел, введенный Windows API, и он составляет 260 символов. Тем не менее, практический пределе меньше, чем 260 символов. Например, все имена должны иметь нулевой терминатор в конце. Обычно, этот маркер видит только Windows, но он все равно воспринимается, как один символ. Таким образом ,у вас есть только 259 доступных символов. Еще три символа используются для указания диска (например, C:). Таким образом, реальный предел для имени, содержащего все каталоги, включая вложенные, и название самого файла вместе с расширением, уменьшается до 256 символов.

Примечание: Windows API — ядровой интерфейс, на котором строится вся операционная система и который используют программы.

Тем не менее, есть еще одна тонкость, связанная с тем, как Windows кодирует символы. Ни один индивидуальный объект (файл или каталог) не может иметь имя длиннее 255 символов. При этом, имя включает в себя пробелы и обратную косую черту, которая используется в качестве разделителей. Этот предел в 255 символов часто цитируется, как предел для названия отдельного файла, но, на практике, это относится только к именам файлов в корневом каталоге без каких-либо каталогов.

Существует и еще одно ограничение на длину имени файла, которое часто упускается из виду. Обычно, по умолчанию Windows поддерживает альтернативное имя файла, используя старую систему именования 8.3. Когда вы создаете папку, Windows будет резервировать 12 символов для альтернативного имени файла, оставляя 244 символов для всех содержащихся внутри объектов. Использование системы именования 8.3 можно отключить, но это может вызвать проблемы, при использовании старых 16-битных программ.

Примечание: Система именования 8.3 довольно проста. 8 — это количество символов наименования. «.» — это разделитель между названием и расширением. 3 — это количество символов для расширения. 12 — это 8 + 1 + 3.

Примечание: Подробнее о том, как отключить поддержку 8.3, смотрите информацию по адресу https://technet.microsoft.com/ru-ru/library/cc778996.aspx. Учтите, что вам потребуется редактировать реестр.

Существует так же механизм, который позволяет использовать более длинные имена файлов. Например, сетевым системам, порой, требуется больше гибкости в именах файлах. Поэтому, Windows API включает в себя специальную систему обращения для поддержки очень длинных Unicode имен в блоках по 255 символов. Эти длинные имена начинаются с префикса «\?» (без кавычек). Так что, если вы столкнулись с проблемой в имени файла, у которого длина слишком большая, то попробуйте использовать этот префикс в имени пути, например, «\?c:file.txt» (без кавычек).

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

☕ Понравился обзор? Поделитесь с друзьями!

  • Типы программ резервирования: какая разница между образом диска, файловым бэкапом и синхронизацией, и какой тип стоит использовать?

    Типы программ резервирования: какая разница между образом диска, файловым бэкапом и синхронизацией, и какой тип стоит использовать?
    Фундаментальные статьи

  • Что такое RSS и как его использовать?

    Что такое RSS и как его использовать?
    Фундаментальные статьи

  • Что означает портативное приложение (portable)?

    Что означает портативное приложение (portable)?
    Фундаментальные статьи

  • IP-адрес и его особенности

    IP-адрес и его особенности
    Фундаментальные статьи

  • Joomla 2.5 добавление пользователями материалов (статей) на сайт

    Joomla 2.5 добавление пользователями материалов (статей) на сайт
    Фундаментальные статьи

  • Система поведенческого анализа антивируса простыми словами

    Система поведенческого анализа антивируса простыми словами
    Фундаментальные статьи

Добавить комментарий / отзыв

Слишком длинное имя файла или слишком длинный целевой путь — как исправить?

Как исправить ошибки слишком длинное имя файла или слишком длинный целевой путьПри копировании, создании, сохранении или перемещении файлов и папок в Windows 11 и Windows 10 на внутреннем HDD или SSD, при копировании данных на внешний диск или флешку, вы можете столкнуться с ошибками вида «Слишком длинный целевой путь. Имена файлов слишком длинны для помещения в эту целевую папку», «Указано неправильное или слишком длинное имя файла» и другие, имеющие отношение к слишком длинным именам или путям к файлам и папкам.

В этой инструкции подробно о том, чем вызваны эти ошибки и как можно их исправить в Windows последних версий, а также дополнительная информация, которая может быть полезной, чтобы решить проблему.

  • Слишком длинное имя файла или слишком длинный целевой путь
    • Причины ошибки и способы её исправить
    • Как включить поддержку длинных путей в Windows
      • В редакторе реестра
      • В редакторе локальной групповой политики
    • Почему ошибка сохраняется при включенной поддержке длинных путей

Причины ошибки «Слишком длинное имя файла» и «Слишком длинный целевой путь» и способы её исправить

Слишком длинный целевой путь при копировании

Несмотря на то, что файловой системой NTFS длина пути ограничена 32760 символов, в Windows существует ограничение на полный путь в 260 символов, включая путь к папке и имя файла с расширением. Ещё одно ограничение — 255 символов на имя файла или отдельной папки. Схожие ограничения есть для файловых систем FAT32 и ExFAT. Когда полный путь к файлу, с которым вы выполняете действия, превышает указанное число символов, вы можете получить сообщение об ошибках о слишком длинном целевом пути или слишком длинном имени файла.

Ошибка Слишком длинное имя файла в Windows

Отсюда основные способы исправить ошибки, связанные с использованием слишком длинного пути:

  1. Использовать более короткие имена файлов и более простое и «компактное» дерево папок.
  2. Включить поддержку длинных путей — такая опция есть в Windows 10 и Windows 11, далее будет рассмотрен порядок действий. Однако, это решит не все проблемы, о чем мы также поговорим.
  3. Использовать файловые менеджеры, которые могут работать с длинными путями по умолчанию: Total Commander, Files (но для него потребуется включить и поддержку длинных путей в системе) или даже 7-Zip File Manager, который прекрасно с этим справляется.

Как включить поддержку длинных путей в Windows 10 и Windows 11

В зависимости от установленной редакции Windows, можно использовать один из следующих способов включения поддержки длинных путей.

В редакторе реестра

Если на вашем компьютере установлена Windows 11 или Windows 10 Домашняя, используйте редактор реестра для включения опции:

  1. Нажмите правой кнопкой мыши по кнопке «Пуск» и выберите пункт «Выполнить» или нажмите клавиши Win+R на клавиатуре, введите regedit и нажмите Enter.
  2. В редакторе реестра перейдите к разделу
    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem
  3. В правой панели редактора реестра дважды нажмите по параметру с именем LongPathsEnabled и присвойте значение 1 вместо 0 для этого параметра. Включить поддержку длинных путей в редакторе реестра Windows
  4. Закройте редактор реестра, перезагрузите компьютер.

В редакторе локальной групповой политики

В Windows Pro и Enterprise можно использовать редактор локальной групповой политики:

  1. Нажмите клавиши Win+R на клавиатуре, введите gpedit.msc в диалоговом окне «Выполнить» и нажмите Enter.
  2. Перейдите к разделу Конфигурация компьютера — Административные шаблоны — Система — Файловая система.
  3. Дважды нажмите по параметру «Включить длинные пути Win32». Политики файловой системы в gpedit
  4. Установите значение «Включено» для этого параметра, примените настройки. Включить поддержку длинных путей в редакторе локальной групповой политики
  5. Закройте редактор локальной групповой политики и перезагрузите компьютер.

Готово, теперь поддержка длинных путей в Windows включена, однако это не означает, что ошибки, с ними связанные, исчезнут.

Почему ошибки длинных путей появляются, несмотря на включенную поддержку длинных путей

Имена файлов слишком длинны для помещения в эту папку

Даже если вы включите поддержку длинных путей к папкам и файлам в Windows 11/10, при действиях с такими файлами в проводнике и некоторых программах вы продолжите получать ошибки вида «Слишком длинный целевой путь. Имена файлов слишком длинны для помещения в эту целевую папку» или «Указано неправильное или слишком длинное имя файла», также будут недоступны некоторые действия в папках, имеющих длинный путь.

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

  • Проводник не сможет полноценно работать с длинными путями даже при включенной поддержке.
  • Файловый менеджер Files из магазина приложений будет исправно работать, если включить поддержку длинных путей, и будет сообщать об ошибках при отключенной поддержке. Работа с длинными путями в файловом менеджере Files
  • Total Commander или встроенный файловый менеджер 7-Zip работают с длинными путями независимо от того, включена ли их поддержка в Windows.

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

Надеюсь, инструкция прояснила причины ошибки и возможные способы решения проблемы. Если же вопросы остаются — жду их в комментариях.

когда я пытаюсь установить длинное имя листа с помощью ruby и win32ole со следующим кодом:

require "win32ole"
excel = WIN32OLE.new('Excel.Application')
excel.Visible = 1
puts excel.version
workbook = excel.Workbooks.Add
worksheet1 = workbook.Worksheets.Add
worksheet1.Name = "Pseudopseudohypoparathyroidism" #Length 30, fine
worksheet2 = workbook.Worksheets.Add
worksheet2.Name = "Supercalifragilisticexpialidocious" #Length 34, not fine

Я получаю следующее:

12.0
-:9:in `method_missing': (in setting property `Name': ) (WIN32OLERuntimeError)
    OLE error code:800A03EC in Microsoft Office Excel
      You typed an invalid name for a sheet or chart. Make sure that:

 The name that you type does not exceed 31 characters.
 The name does not contain any of the following characters:  :    /  ?  *  [  or  ]
 You did not leave the name blank.
    HRESULT error code:0x80020009
      Exception occurred.
        from -:9:in `<main>'

версия 12.0 указывает, что я запускаю Excel 2007, но он жалуется, что имя рабочего листа слишком длинное. Я взглянул на Excel 2007 технические характеристики и ограничения как говорится в это связано ответа, и я не мог найти упоминания о таком пределе. (Попытка переименовать рабочий лист вручную предполагает, что может быть такой предел, однако)

есть ли предел, и это жесткий предел или тот, который можно изменить, изменив конфигурацию Excel?

5 ответов


формат файла позволит до 255-символьных имен листов, но если пользовательский интерфейс Excel не хочет, чтобы вы превышали 31 символ, не пытайтесь выйти за пределы 31. Приложение полно странных недокументированных ограничений и причуд, и подача его файлов, которые находятся в пределах спецификации, но не в пределах диапазона вещей, которые тестировщики бы протестировали, обычно вызывает действительно странное поведение. (Личный любимый пример: использование байт-кода Excel 4.0 для функции if() в файле со Строковой таблицей Excel 97 отключено кнопка панели инструментов для полужирного шрифта в Excel 97.)


переименование листа вручную в Excel, вы попали в предел 31 символов, поэтому я бы предложил, что это жесткий предел.


мое решение состояло в том, чтобы использовать короткий псевдоним (менее 31 символа), а затем написать все имя в ячейке 0.


Я использую следующий код vba, где filename-это строка, содержащая имя файла, которое я хочу, а функция RemoveSpecialCharactersAndTruncate определена ниже:

worksheet1.Name = RemoveSpecialCharactersAndTruncate(filename)

'Function to remove special characters from file before saving

Private Function RemoveSpecialCharactersAndTruncate$(ByVal FormattedString$)
    Dim IllegalCharacterSet$
    Dim i As Integer
'Set of illegal characters
    IllegalCharacterSet$ = "*." & Chr(34) & "//[]:;|=,"
    'Iterate through illegal characters and replace any instances
    For i = 1 To Len(IllegalCharacterSet) - 1
        FormattedString$ = Replace(FormattedString$, Mid(IllegalCharacterSet, i, 1), "")
    Next
    'Return the value capped at 31 characters (Excel limit)
    RemoveSpecialCharactersAndTruncate$ = Left(FormattedString$, _
                           Application.WorksheetFunction.Min(Len(FormattedString), 31))
End Function

Я только что протестировал пару путей с помощью Excel 2013 на Windows 7. Я обнаружил, что общий предел пути составляет 213, а длина базового имени-186. По крайней мере, диалоговое окно ошибки для превышения длины базового имени ясно: basename error

и попытка переместить не слишком длинное базовое имя в слишком длинный путь также очень ясна:enter image description here

ошибка пути обманчива, хотя. Совершенно неконструктивным:enter image description here

это ленивый Microsoft ограничение. Нет никаких оснований для этих произвольных ограничений длины, но, в конце концов, это реальная ошибка в диалоговом окне ошибки.


Понравилась статья? Поделить с друзьями:
  • Диспетчер имен не открывается excel
  • Длина диапазона vba excel
  • Диспетчер имен есть в excel
  • Длина данных в excel
  • Диспетчер имен в excel что это