Какова максимальная длина имени файла операционной системы windows

Смотрите также Как в Windows 10 включить поддержку пути к файлам длиной более 260 символов.

Смотрите также Как в Windows 10 включить поддержку пути к файлам длиной более 260 символов.

Во всех операционных системах и для всех файловых систем существуют определённые лимиты на:

  • размер имени файла
  • на полный путь файла (который включает папки и подпапки)

Операционная система Windows не является исключением, в ней длина имени файла или папки ограничена 255 символами, а вся длина пути ограничена примерно 32,000 символами.

Имеется ряд исключений, когда разрешённая длина файла должна быть меньше этих значений:

  • предыдущие версии Windows
  • сетевые диски
  • оптические диски CD и DVD

К сожалению, Windows весьма «молчалив» в ситуациях, когда возникают проблемы с длиной имени файла или пути на сетевых носителях. В результате, часть файлов может отображаться нормально, а часть отсутствовать. Если файлов много, то не всегда просто понять, все ли они на месте. Признаками того, что некоторые файлы на сетевой папке имеют слишком длинное имя является:

  • отсутствует файл, который точно должен быть или который виден при подключении диска напрямую (а не через сеть)
  • при создании файла возникает ошибка, что такой файл уже существует, хотя его не видно

При поиске по файлам средствами ОС, эти файлы также недоступны для индексации и поиска по ним.

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

Подтвердить проблему слишком длинного имени на сетевом носителе можно командой вида:

dir "\путьдопапки"

Например команда:

dir "\VBOXSVRShareАрхив работУП"

вызывает следующую ошибку из-за того, что в папке имеется файл со слишком длинным именем:

    Каталог: \VBOXSVRShareАрхив работУП


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       24.08.2010     17:29                Общая часть
d-----       17.02.2019     16:10                Особенная часть
d-----       01.11.2018     10:24                Чужое
dir : Параметр задан неверно.
строка:1 знак:1
+ dir "\VBOXSVRShareАрхив работУП"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ReadError: (\VBOXSVRShareАрхив работУП:String) [Get-ChildItem], IOException
    + FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand

Если вы работаете с сетевым диском и он подключён к Linux, то вам может помочь инструкция «Как найти имена файлов, чья длина превышает определённое значение».

В остальных случаях, попробуйте следующие советы:

1. (если слишком длинный путь до файла) Вначале скопируйте папку на более высокие уровни в windows эксплорере и затем переместите их на ваш локальный компьютер

2. (если имена файлов слишком длинные) Вначале попробуйте поместить их в архив программами zip/rar/7z и затем скопируйте файл архива на свой локальный компьютер и извлеките его содержимое

3. Попробуйте встроенную программу ROBOCOPY:

robocopy /E ИСТОЧНИК НАЗНАЧЕНИЕ

4. Попробуйте перед путём добавить \?

\?C:SomeReallyLongPath

5. Используйте сторонне программное обеспечение (о нём далее)

FastCopy — это проект с открытым исходным кодом на C, написанный SHIROUZU Hiroaki и это «Самое быстрое программное обеспечение для копирования/удаления файлов на Windows.» Программа поддеррживает UNICODE и более чем MAX_PATH (260 символов) в путях имён файлов.

Если имеются сотни путей, которые слишком долго исправлять, то используйте инструмент «Path Tool Long Auto Fixer».

Связанные статьи:

  • Как в Windows 10 включить поддержку пути к файлам длиной более 260 символов (93.2%)
  • Как переименовать файл или папку в PowerShell (64.4%)
  • Создание жёстких и мягких ссылок с помощью PowerShell (64.4%)
  • Как создать общую сетевую папку на Windows (56.8%)
  • Как подключиться к сетевой папке в Windows (SMB) (56.8%)
  • Как ограничить скорость загрузки обновлений Windows 10 (RANDOM — 50%)

I’m designing a database table which will hold filenames of uploaded files. What is the maximum length of a filename in NTFS as used by Windows XP or Vista?

Peter Mortensen's user avatar

asked Nov 5, 2008 at 16:39

GateKiller's user avatar

GateKillerGateKiller

73k72 gold badges170 silver badges204 bronze badges

9

Individual components of a filename (i.e. each subdirectory along the path, and the final filename) are limited to 255 characters, and the total path length is limited to approximately 32,000 characters.

However, on Windows, you can’t exceed MAX_PATH value (259 characters for files, 248 for folders). See http://msdn.microsoft.com/en-us/library/aa365247.aspx for full details.

Louis CAD's user avatar

Louis CAD

10.7k2 gold badges37 silver badges57 bronze badges

answered Nov 5, 2008 at 16:41

Adam Rosenfield's user avatar

Adam RosenfieldAdam Rosenfield

384k96 gold badges510 silver badges586 bronze badges

13

It’s 257 characters.
To be precise:
NTFS itself does impose a maximum filename-length of several thousand characters (around 30’000 something).
However, Windows imposes a 260 maximum length for the Path+Filename. The drive+folder takes up at least 3 characters, so you end up with 257.

answered Nov 5, 2008 at 16:45

Alphager's user avatar

5

This is what the «Unhandled exception» says on framework 4.5 when trying to save a file with a long filename:

The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.

screenshot

Samuel Liew's user avatar

Samuel Liew

75.1k106 gold badges159 silver badges249 bronze badges

answered Apr 12, 2013 at 12:29

Zero Infinity's user avatar

199 on Windows XP NTFS, I just checked.

This is not theory but from just trying on my laptop. There may be mitigating effects, but it physically won’t let me make it bigger.

Is there some other setting limiting this, I wonder? Try it for yourself.

Peter Mortensen's user avatar

answered Nov 5, 2008 at 16:48

dove's user avatar

dovedove

20.3k14 gold badges87 silver badges107 bronze badges

12

The length in NTFS is 255. The NameLength field in the NTFS $Filename attribute is a byte with no offset; this yields a range of 0-255.

The file name iself can be in different «namespaces». So far there are: POSIX, WIN32, DOS and (WIN32DOS — when a filename can be natively a DOS name). (Since the string has a length, it could contain but that would yield to problems and is not in the namespaces above.)

Thus the name of a file or directory can be up to 255 characters. When specifying the full path under Windows, you need to prefix the path with \? (or use \?UNCservershare for UNC paths) to mark this path as an extended-length one (~32k characters). If your path is longer, you will have to set your working directory along the way (ugh — side effects due to the process-wide setting).

Jesper's user avatar

Jesper

1,58111 silver badges10 bronze badges

answered Aug 24, 2010 at 13:51

Dominik Weber's user avatar

1

According to MSDN, it’s 260 characters. It includes "<NUL>" -the invisible terminating null character, so the actual length is 259.

But read the article, it’s a bit more complicated.

Michael Freidgeim's user avatar

answered Nov 5, 2008 at 16:42

Kibbee's user avatar

KibbeeKibbee

64.9k27 gold badges141 silver badges181 bronze badges

1

answered Nov 5, 2008 at 16:40

warren's user avatar

warrenwarren

31.8k21 gold badges86 silver badges121 bronze badges

I’m adding this to the above approved answer.

TO BE CLEAR, the reason people believe it to be 255-260 characters is because that is all that Windows Explorer supports. It will error out doing something like a file copy on filenames longer than that. However, a program can read and write much longer filenames (which is how you get to lengths that Explorer complains about in the first place). Microsoft’s «recommended fix» in situations like this is to open the file in the original program that wrote it and rename it.

answered Oct 9, 2012 at 14:16

std''OrgnlDave's user avatar

std»OrgnlDavestd»OrgnlDave

3,8721 gold badge24 silver badges34 bronze badges

2

This part of the official documentation says clearly that it’s 255 Unicode characters for NTFS, exFAT and FAT32, and 127 Unicode or 254 ASCII characters for UDF.

Apart from that, the maximum path name length is always 32,760 Unicode characters, with each path component no more than 255 characters.

answered Aug 9, 2018 at 20:31

caw's user avatar

cawcaw

30.7k60 gold badges180 silver badges290 bronze badges

1

According to the new Windows SDK documentation (8.0) it seems that a new path limit is provided. There is a new set of path handling functions and an definition of PATHCCH_MAX_CCH like follows:

// max # of characters we support using the "\?" syntax
// (0x7FFF + 1 for NULL terminator)
#define PATHCCH_MAX_CCH             0x8000

answered Sep 11, 2013 at 17:19

1

255 chars, though the complete path should not be longer than that as well. There is a nice table over at Wikipedia about this: http://en.wikipedia.org/wiki/Filename.

answered Nov 5, 2008 at 16:44

Svante Svenson's user avatar

Svante SvensonSvante Svenson

12.3k4 gold badges41 silver badges45 bronze badges

In Windows 11 (In NTFS drive) is 236 with extension

For testing rename a file with below name and try to add one character more:

1234567890123456789010123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt

answered Oct 21, 2022 at 4:59

Mehdi's user avatar

MehdiMehdi

7432 gold badges8 silver badges20 bronze badges

238!
I checked it under Win7 32 bit with the following bat script:

set "fname="
for /l %%i in (1, 1, 27) do @call :setname
@echo %fname%
for /l %%i in (1, 1, 100) do @call :check
goto :EOF
:setname
set "fname=%fname%_123456789"
goto :EOF
:check
set "fname=%fname:~0,-1%"
@echo xx>%fname%
if not exist %fname% goto :eof
dir /b
pause
goto :EOF

answered May 28, 2015 at 14:08

SzB's user avatar

SzBSzB

9679 silver badges12 bronze badges

2

Actually it is 256, see File System Functionality Comparison, Limits.

To repeat a post on http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html

«Assuming we’re talking about NTFS and not FAT32, the «255 characters
for path+file» is a limitation of Explorer, not the filesystem itself.
NTFS supports paths up to 32,000 Unicode characters long, with each
component up to 255 characters.

Explorer -and the Windows API- limits you to 260 characters for the
path, which include drive letter, colon, separating slashes and a
terminating null character. It’s possible to read a longer path in
Windows if you start it with a \«

If you read the above posts you’ll see there is a 5th thing you can be certain of:
Finding at least one obstinate computer user!

user692942's user avatar

user692942

16.1k7 gold badges76 silver badges172 bronze badges

answered Nov 20, 2009 at 17:01

fane's user avatar

2

I cannot create a file with the name+period+extnesion in WS 2012 Explorer longer than 224 characters. Don’t shoot the messenger!

In the CMD of the same server I cannot create a longer than 235 character name:

The system cannot find the path specified.

The file with a 224 character name created in the Explorer cannot be opened in Notepad++ — it just comes up with a new file instead.

answered Feb 23, 2018 at 21:12

ajeh's user avatar

ajehajeh

2,6002 gold badges31 silver badges61 bronze badges

1

I’m designing a database table which will hold filenames of uploaded files. What is the maximum length of a filename in NTFS as used by Windows XP or Vista?

Peter Mortensen's user avatar

asked Nov 5, 2008 at 16:39

GateKiller's user avatar

GateKillerGateKiller

73k72 gold badges170 silver badges204 bronze badges

9

Individual components of a filename (i.e. each subdirectory along the path, and the final filename) are limited to 255 characters, and the total path length is limited to approximately 32,000 characters.

However, on Windows, you can’t exceed MAX_PATH value (259 characters for files, 248 for folders). See http://msdn.microsoft.com/en-us/library/aa365247.aspx for full details.

Louis CAD's user avatar

Louis CAD

10.7k2 gold badges37 silver badges57 bronze badges

answered Nov 5, 2008 at 16:41

Adam Rosenfield's user avatar

Adam RosenfieldAdam Rosenfield

384k96 gold badges510 silver badges586 bronze badges

13

It’s 257 characters.
To be precise:
NTFS itself does impose a maximum filename-length of several thousand characters (around 30’000 something).
However, Windows imposes a 260 maximum length for the Path+Filename. The drive+folder takes up at least 3 characters, so you end up with 257.

answered Nov 5, 2008 at 16:45

Alphager's user avatar

5

This is what the «Unhandled exception» says on framework 4.5 when trying to save a file with a long filename:

The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.

screenshot

Samuel Liew's user avatar

Samuel Liew

75.1k106 gold badges159 silver badges249 bronze badges

answered Apr 12, 2013 at 12:29

Zero Infinity's user avatar

199 on Windows XP NTFS, I just checked.

This is not theory but from just trying on my laptop. There may be mitigating effects, but it physically won’t let me make it bigger.

Is there some other setting limiting this, I wonder? Try it for yourself.

Peter Mortensen's user avatar

answered Nov 5, 2008 at 16:48

dove's user avatar

dovedove

20.3k14 gold badges87 silver badges107 bronze badges

12

The length in NTFS is 255. The NameLength field in the NTFS $Filename attribute is a byte with no offset; this yields a range of 0-255.

The file name iself can be in different «namespaces». So far there are: POSIX, WIN32, DOS and (WIN32DOS — when a filename can be natively a DOS name). (Since the string has a length, it could contain but that would yield to problems and is not in the namespaces above.)

Thus the name of a file or directory can be up to 255 characters. When specifying the full path under Windows, you need to prefix the path with \? (or use \?UNCservershare for UNC paths) to mark this path as an extended-length one (~32k characters). If your path is longer, you will have to set your working directory along the way (ugh — side effects due to the process-wide setting).

Jesper's user avatar

Jesper

1,58111 silver badges10 bronze badges

answered Aug 24, 2010 at 13:51

Dominik Weber's user avatar

1

According to MSDN, it’s 260 characters. It includes "<NUL>" -the invisible terminating null character, so the actual length is 259.

But read the article, it’s a bit more complicated.

Michael Freidgeim's user avatar

answered Nov 5, 2008 at 16:42

Kibbee's user avatar

KibbeeKibbee

64.9k27 gold badges141 silver badges181 bronze badges

1

answered Nov 5, 2008 at 16:40

warren's user avatar

warrenwarren

31.8k21 gold badges86 silver badges121 bronze badges

I’m adding this to the above approved answer.

TO BE CLEAR, the reason people believe it to be 255-260 characters is because that is all that Windows Explorer supports. It will error out doing something like a file copy on filenames longer than that. However, a program can read and write much longer filenames (which is how you get to lengths that Explorer complains about in the first place). Microsoft’s «recommended fix» in situations like this is to open the file in the original program that wrote it and rename it.

answered Oct 9, 2012 at 14:16

std''OrgnlDave's user avatar

std»OrgnlDavestd»OrgnlDave

3,8721 gold badge24 silver badges34 bronze badges

2

This part of the official documentation says clearly that it’s 255 Unicode characters for NTFS, exFAT and FAT32, and 127 Unicode or 254 ASCII characters for UDF.

Apart from that, the maximum path name length is always 32,760 Unicode characters, with each path component no more than 255 characters.

answered Aug 9, 2018 at 20:31

caw's user avatar

cawcaw

30.7k60 gold badges180 silver badges290 bronze badges

1

According to the new Windows SDK documentation (8.0) it seems that a new path limit is provided. There is a new set of path handling functions and an definition of PATHCCH_MAX_CCH like follows:

// max # of characters we support using the "\?" syntax
// (0x7FFF + 1 for NULL terminator)
#define PATHCCH_MAX_CCH             0x8000

answered Sep 11, 2013 at 17:19

1

255 chars, though the complete path should not be longer than that as well. There is a nice table over at Wikipedia about this: http://en.wikipedia.org/wiki/Filename.

answered Nov 5, 2008 at 16:44

Svante Svenson's user avatar

Svante SvensonSvante Svenson

12.3k4 gold badges41 silver badges45 bronze badges

In Windows 11 (In NTFS drive) is 236 with extension

For testing rename a file with below name and try to add one character more:

1234567890123456789010123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt

answered Oct 21, 2022 at 4:59

Mehdi's user avatar

MehdiMehdi

7432 gold badges8 silver badges20 bronze badges

238!
I checked it under Win7 32 bit with the following bat script:

set "fname="
for /l %%i in (1, 1, 27) do @call :setname
@echo %fname%
for /l %%i in (1, 1, 100) do @call :check
goto :EOF
:setname
set "fname=%fname%_123456789"
goto :EOF
:check
set "fname=%fname:~0,-1%"
@echo xx>%fname%
if not exist %fname% goto :eof
dir /b
pause
goto :EOF

answered May 28, 2015 at 14:08

SzB's user avatar

SzBSzB

9679 silver badges12 bronze badges

2

Actually it is 256, see File System Functionality Comparison, Limits.

To repeat a post on http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html

«Assuming we’re talking about NTFS and not FAT32, the «255 characters
for path+file» is a limitation of Explorer, not the filesystem itself.
NTFS supports paths up to 32,000 Unicode characters long, with each
component up to 255 characters.

Explorer -and the Windows API- limits you to 260 characters for the
path, which include drive letter, colon, separating slashes and a
terminating null character. It’s possible to read a longer path in
Windows if you start it with a \«

If you read the above posts you’ll see there is a 5th thing you can be certain of:
Finding at least one obstinate computer user!

user692942's user avatar

user692942

16.1k7 gold badges76 silver badges172 bronze badges

answered Nov 20, 2009 at 17:01

fane's user avatar

2

I cannot create a file with the name+period+extnesion in WS 2012 Explorer longer than 224 characters. Don’t shoot the messenger!

In the CMD of the same server I cannot create a longer than 235 character name:

The system cannot find the path specified.

The file with a 224 character name created in the Explorer cannot be opened in Notepad++ — it just comes up with a new file instead.

answered Feb 23, 2018 at 21:12

ajeh's user avatar

ajehajeh

2,6002 gold badges31 silver badges61 bronze badges

1

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

Игорь (Администратор)

Вы когда-нибудь сталкивались с сообщением об ошибке в 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-системах состоит из буквы диска,
после которого ставится двоеточие и
обратная наклонная черта (обратный
слеш), затем через обратные слеши
перечисляются подкаталоги, в конце
пишется имя файла. Пример:

C:WindowsSystem32calc.exe

в UNIX-системах
полный путь состоит из слеша (/),
обозначающего корневой каталог, после
которого через слеши перечисляются
подкаталоги, в конце пишется имя файла.
Пример:

/usr/local/bin/gcc

Имя файла
состоит из двух частей, разделенных
точкой:

  • Название (до точки, часто также называют
    именем);

  • Расширение
    (необязательная часть).

Полное имя
файла (включая расширение) в Windows может
содержать до 260 символов, данное значение
определено константой MAX_PATH в Windows API;
например максимально допустимое полное
имя файла на диске C будет таким «C:<256
символов>NULL». Однако юникодные версии
некоторых функций позволяют использовать
имена файлов, содержащие до 32000 символов,
такие имена начинаются с префикса
«\?». Пример:

\?C:WindowsSystem32calc.exe

При
использовании префикса «\?» необходимо
указывать абсолютный путь к файлу,
относительные пути не допускаются. При
использовании относительных путей
максимальное полное имя файла ограничено
константой MAX_PATH (260 символов).

В Windows в
имени файла запрещено использование
некоторых служебных символов: «», «/»,
«:», «*», «?», «»», «<», «>», «|». В Linux
эти символы, кроме «/», допустимы, хотя
использовать их следует с осторожностью,
так как некоторые из них могут иметь
специальный смысл, а также из соображений
совместимости с другими ОС.

Название
файлу (до точки) рекомендуется давать
осмысленное, говорящее о назначении
файла, дабы избежать путаницы в дальнейшем.

. Расширение
имени

Расширение
имени файла
(англ. filename extension,
часто говорят просто расширение файла
или расширение) — последовательность
символов, добавляемых к имени файла и
предназначенных для идентификации типа
(формата) файла. Это один из распространённых
способов, с помощью которых пользователь
или программное обеспечение компьютера
может определить тип данных, хранящихся
в файле.

Расширение
обычно отделяется от основной части
имени файла точкой. В операционных
системах CP/M и MS-DOS длина расширения была
ограничена тремя символами, в современных
операционных системах это ограничение
отсутствует. Иногда могут использоваться
несколько расширений, следующих друг
за другом, например, «.tar.gz».

В файловой
системе FAT16 имя файла и расширение
являлись отдельными сущностями, а точка,
разделявшая их, реально не являлась
частью полного имени файла и служила
лишь для визуального отделения имени
файла от расширения. В файловых системах
FAT32 и NTFS точка стала обычным разрешённым
символом в имени файла, поэтому ограничения
на количество точек в имени файла в этих
системах и их местоположения были сняты
(за некоторыми исключениями, например,
все конечные точки в именах файлов
просто отбрасываются). Поэтому стандартный
шаблон поиска *.* не имеет больше
практического смысла, достаточно задать
*, так как символ точки теперь
подпадает под понятие любого символа.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Если вам кажется, что нет ничего проще, чем придумать имя для файла или папки, то скорее всего вы ошибаетесь. Существуют правила из-за которых нельзя назвать файл любым именем как обычный физический предмет. Для начала проясним, что такое имя файла, и как оно используется.

Понятия «путь» и «имя файла»

Очень часто в компьютерной литературе используются термины «путь» и «имя файла» под разными значениями. Обычно под словом «путь» понимают адрес или расположение файла, т. е. диск, папка и подпапки в которых расположен файл. Однако 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 символов.

Содержание

  1. Существует ли предел длины имени файлов в Windows
  2. Мир цифровой информации
  3. Понятия «путь» и «имя файла»
  4. Зарезервированные символы и имена
  5. Ограничения на длины имен файлов и путей
  6. Ограничение длины файлов в Windows особенности и тонкости
  7. Максимальная длина имени файла в NTFS (Windows XP и Windows Vista)?
  8. Длинные имена файлов. Невозможно скопировать или удалить файл.

Существует ли предел длины имени файлов в Windows

Во всех операционных системах и для всех файловых систем существуют определённые лимиты на:

  • размер имени файла
  • на полный путь файла (который включает папки и подпапки)

Операционная система Windows не является исключением, в ней длина имени файла или папки ограничена 255 символами, а вся длина пути ограничена примерно 32,000 символами.

Имеется ряд исключений, когда разрешённая длина файла должна быть меньше этих значений:

  • предыдущие версии Windows
  • сетевые диски
  • оптические диски CD и DVD

К сожалению, Windows весьма «молчалив» в ситуациях, когда возникают проблемы с длиной имени файла или пути на сетевых носителях. В результате, часть файлов может отображаться нормально, а часть отсутствовать. Если файлов много, то не всегда просто понять, все ли они на месте. Признаками того, что некоторые файлы на сетевой папке имеют слишком длинное имя является:

  • отсутствует файл, который точно должен быть или который виден при подключении диска напрямую (а не через сеть)
  • при создании файла возникает ошибка, что такой файл уже существует, хотя его не видно

При поиске по файлам средствами ОС, эти файлы также недоступны для индексации и поиска по ним.

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

Подтвердить проблему слишком длинного имени на сетевом носителе можно командой вида:

вызывает следующую ошибку из-за того, что в папке имеется файл со слишком длинным именем:

Если вы работаете с сетевым диском и он подключён к Linux, то вам может помочь инструкция «Как найти имена файлов, чья длина превышает определённое значение».

В остальных случаях, попробуйте следующие советы:

1. (если слишком длинный путь до файла) Вначале скопируйте папку на более высокие уровни в windows эксплорере и затем переместите их на ваш локальный компьютер

2. (если имена файлов слишком длинные) Вначале попробуйте поместить их в архив программами zip/rar/7z и затем скопируйте файл архива на свой локальный компьютер и извлеките его содержимое

3. Попробуйте встроенную программу ROBOCOPY:

4. Попробуйте перед путём добавить \?

5. Используйте сторонне программное обеспечение (о нём далее)

FastCopy — это проект с открытым исходным кодом на C, написанный SHIROUZU Hiroaki и это «Самое быстрое программное обеспечение для копирования/удаления файлов на Windows.» Программа поддеррживает UNICODE и более чем MAX_PATH (260 символов) в путях имён файлов.

Если имеются сотни путей, которые слишком долго исправлять, то используйте инструмент «Path Tool Long Auto Fixer».

Мир цифровой информации

Если вам кажется, что нет ничего проще, чем придумать имя для файла или папки, то скорее всего вы ошибаетесь. Существуют правила из-за которых нельзя назвать файл любым именем как обычный физический предмет. Для начала проясним, что такое имя файла, и как оно используется.

Понятия «путь» и «имя файла»

Очень часто в компьютерной литературе используются термины «путь» и «имя файла» под разными значениями. Обычно под словом «путь» понимают адрес или расположение файла, т. е. диск, папка и подпапки в которых расположен файл. Однако 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 особенности и тонкости

Вы когда-нибудь сталкивались с сообщением об ошибке в 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» (без кавычек).

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

Максимальная длина имени файла в NTFS (Windows XP и Windows Vista)?

Я создаю таблицу базы данных, в которой будут храниться имена файлов загруженных файлов. Какова максимальная длина имени файла в NTFS, используемая Windows XP или Vista?

Согласно новой документации Windows SDK (8.0), создается новый предел пути. Существует новый набор функций обработки пути, а определение PATHCCH_MAX_CCH выглядит следующим образом:

Отдельные компоненты имени файла (то есть каждый подкаталог вдоль пути и окончательное имя файла) ограничены 255 символами, а общая длина пути ограничена примерно 32 000 символов.

Однако в Windows нельзя превышать значение MAX_PATH (259 символов для файлов, 248 для папок). См. Http://msdn.microsoft.com/en-us/library/aa365247.aspx для получения полной информации.

Это 257 символов.
Точнее:
Сама NTFS накладывает максимальную длину файла в несколько тысяч символов (около 30 000 штук).
Тем не менее, Windows налагает максимальную длину 260 для Path + Filename. Дисковод + папка занимает не менее 3 символов, поэтому вы получите 257.

Вот что говорит «Необработанное исключение» в Framework 4.5 при попытке сохранить файл с длинным именем файла:

Указанный путь, имя файла или оба они слишком длинные. Полное имя файла должно быть не более 260 символов, а имя каталога должно быть не более 248 символов.

199 в Windows XP NTFS, я только что проверил.

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

Есть ли какие-то другие ограничения, ограничивающие это, интересно? Попробуйте сами.

Согласно MSDN, это 260 символов. Он включает » » — невидимый завершающий нулевой символ, поэтому фактическая длина равна 259.

Но прочитайте статью, это немного сложнее.

Длина в NTFS — 255. Поле NameLength в атрибуте $Filename NTFS является байтом без смещения; это дает диапазон 0-255.

Имя файла iself может находиться в разных «пространствах имен». Пока что есть: POSIX, WIN32, DOS и (WIN32DOS — когда имя файла может быть изначально именем DOS). (Поскольку строка имеет длину, она может содержать , но это может привести к проблемам и не находится в указанных выше пространствах имен.)

Таким образом, имя файла или каталога может содержать до 255 символов. При указании полного пути в Windows необходимо указать префикс пути \? (Или использовать \?UNCservershare для путей UNC), чтобы пометить этот путь как расширенный (

32 тыс. Символов), Если ваш путь длиннее, вам придется установить свой рабочий каталог по пути (тьфу — побочные эффекты из-за настройки всего процесса).

Длинные имена файлов. Невозможно скопировать или удалить файл.

Для начал разберем, что из чего состоит имя файла.

Имя файла — строка символов, однозначно определяющая файл в некотором пространстве имён файловой системы (ФС).

Полное имя файла может состоять из:

Протокола доступа к файлу (красное выделение) — по какому протоколу операционная система будет обращаться к файлу
Имя или адрес хоста (синее) — если доступ к файлу осуществляется по сети
Устройство или ФС (файловая система) в *nix системах (зеленое) — если файл расположен на локальной машине
Путь к файлу или каталог (директория) (оранжевое) — это привычные для нас папки
Имя файла (сиреневое) с расширением (серое) — собственно имя файла, расширение может отсутствовать

Так когда же ОС будет выдавать ошибку?

В Windows (файловая система NTFS) максимальная длина имени файла при работе из командной строки ограничивается 255 символами. В проводнике мне удалось создать файл полным именем в 502 символа с использованием кириллицы.

Для разных файловых систем существуют различные ограничения:

NTFS: 255 символов в кодировке UTF-16
FAT32: 255 символов при использовании формата 8.3 (PRORGA

1)
ext3/ext4: 255 байт (длина в символах зависит от кодировки)
zFS: 255 байт (UTF-8)

Указанные выше ограничения взяты из Википедии. Из личного опыта: на ext3 имена латиницей упирались в 254 символа, а с использованием кириллицы в 128.

Надеюсь данная информация поможет вам.
Лучшая благодарность от вас — это лайки, подписки и комментарии.

Понравилась статья? Поделить с друзьями:
  • Какова максимальная длина имени рабочей группы в windows 7
  • Каков состав рабочего стола панели задач ос windows
  • Каков состав главного меню ос windows
  • Каких шрифтов нет в windows 10
  • Каких типов потоков нет в windows