Windows копирование файлов с длинным именем

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

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

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

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

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

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

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

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

  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_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
  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.

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

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

Applies ToWindows Server 2012 R2 Datacenter Windows Server 2012 R2 Essentials Windows Server 2012 R2 Foundation Windows Server 2012 R2 Standard Windows 8.1 Enterprise Windows 8.1 Pro Windows 8.1 Windows Server 2012 Datacenter Windows Server 2012 Datacenter Windows Server 2012 Standard Windows Server 2012 Standard Windows Server 2012 Essentials Windows Server 2012 Foundation Windows Server 2012 Foundation Windows 8 Enterprise Windows 8 Pro Windows 8 Windows 7 Service Pack 1 Windows Server 2008 R2 Service Pack 1

Симптомы

Рассмотрим следующий сценарий:

  • У вас есть компьютер под управлением Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012 Пакет обновления 1 (SP1) для Windows 7 или Windows Server 2008 R2 Пакет обновления 1 (SP1).

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

  • Файлы или папки, которые вы поместите имеют пути, длина которых превышает максимальную допустимую длину пути.

В этом случае проведение операции копирования является ненадежным и происходит сбой из-за длины пути файла или папки. Кроме того возможно возникновение следующих проблем:

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

  • Операция копирования не запускается. В этом случае сообщение не формируется.

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

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

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

Причина

Эта проблема возникает из-за особенности в способе обработки Windows ошибок длинных путей.

Решение

Для решения этой проблемы для Windows 8.1, Windows Server 2012 R2, Windows 8, andWindows Server 2012 установите накопительный пакет обновления.Для решения этой проблемы для Windows 7 и Windows Server 2008 R2, установите исправление, описанное в данной статье.

Сведения об обновлении для Windows 8.1, Windows Server 2012 R2, Windows Server 2012 и Windows 8

Для решения этой проблемы установите накопительный пакет обновления, выпущенного апрель 2012 г. и 2014 ноября.

  • Windows RT 8.1, Windows 8.1 и обновления Windows Server 2012 R2: апреля 2014 г

  • Получить ноябрь 2014 накопительный пакет обновления для Windows Server 2012, Windows 8 и Windows RT

Сведения об исправлении для Windows 7 и Windows Server 2008 R2

Доступно исправление от службы поддержки Майкрософт. Однако данное исправление предназначено для устранения только проблемы, описанной в этой статье. Применяйте это исправление только в тех случаях, когда наблюдается проблема, описанная в данной статье. Это исправление может проходить дополнительное тестирование. Таким образом если вы не подвержены серьезно этой проблеме, рекомендуется дождаться следующего пакета обновления, содержащего это исправление.

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

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

http://support.microsoft.com/contactus/?ws=supportПримечание. В форме «Пакет исправлений доступен для скачивания» отображаются языки, для которых доступно исправление. Если нужный язык не отображается, значит исправление для данного языка отсутствует.

Предварительные условия

Для установки этого исправления необходимо иметь Пакет обновления 1 для Windows 7 или Windows Server 2008 R2 установлен.

Необходимость перезагрузки

После установки исправления компьютер необходимо перезагрузить.

Сведения о замене исправлений

Это исправление не заменяет все ранее выпущенные исправления.

Английский (США) версия данного исправления устанавливает файлы с атрибутами, указанными в приведенных ниже таблицах. Дата и время для файлов указаны в формате UTC. Дата и время для файлов на локальном компьютере отображаются в местном времени с вашим текущим смещением летнего времени (DST). Кроме того, при выполнении определенных операций с файлами, даты и время могут изменяться.

Информация о файлах для Windows 7 и Windows Server 2008 R2 и примечанияВажно. Исправления для Windows Server 2008 R2 и Windows 7 включены в одни и те же пакеты. Однако исправления на странице запроса исправлений перечислены под обеими операционными системами. Чтобы запросить пакет исправления, который применяется к одной или обеим ОС, установите исправление, описанное в разделе «Windows 7/Windows Server 2008 R2» страницы. Всегда смотрите раздел «Информация в данной статье относится к следующим продуктам» статьи для определения фактических операционных систем, к которым применяется каждое исправление.

  • Файлы, относящиеся к определенному продукту, этапу разработки (RTM, SPn) и направлению поддержки (LDR, GDR) можно определить путем проверки номера версий файлов, как показано в следующей таблице.

    Версия

    Продукт

    SR_Level

    Направление поддержки

    6.1.760 1. 22 xxx

    Windows 7 и Windows Server 2008 R2

    SP1

    LDR

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

  • Файлы MANIFEST (.manifest) и MUM (.mum), устанавливаемые для каждой среды, указаны отдельно в разделе «Сведения о дополнительных файлах для Windows 7 и Windows Server 2008 R2». Файлы MUM и MANIFEST, а также связанные файлы каталога безопасности (CAT) чрезвычайно важны для поддержания состояния обновленных компонентов. Файлы каталога безопасности, для которых не перечислены атрибуты, подписаны цифровой подписью корпорации Майкрософт.

Для всех поддерживаемых 86-разрядных версий Windows 7

Имя файла

Версия файла

Размер файла

Дата

Время

Платформа

Shell32.dll

6.1.7601.22503

12,875,776

06-Nov-2013

08:00

x86

Для всех поддерживаемых 64-разрядных версий Windows 7 и Windows Server 2008 R2

Имя файла

Версия файла

Размер файла

Дата

Время

Платформа

Shell32.dll

6.1.7601.22503

14,177,792

06-Nov-2013

08:51

x64

Shell32.dll

6.1.7601.22503

12,875,776

06-Nov-2013

08:00

x86

Для всех поддерживаемых версий Windows Server 2008 R2 для систем на базе процессоров IA-64

Имя файла

Версия файла

Размер файла

Дата

Время

Платформа

Shell32.dll

6.1.7601.22503

21,196,800

06-Nov-2013

07:58

IA-64

Shell32.dll

6.1.7601.22503

12,875,776

06-Nov-2013

08:00

x86

Статус

Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе «Относится к».

Сведения о дополнительных файлах для Windows 7 и Windows Server 2008 R2

Дополнительные файлы для всех поддерживаемых 86-разрядных версий Windows 7

Имя файла

X86_5d28b9c19d39486a1a7e115506261602_31bf3856ad364e35_6.1.7601.22503_none_8fa29bae8b68a3a7.manifest

Версия файла

Неприменимо

Размер файла

695

Дата (UTC)

06-Nov-2013

Время (UTC)

14:55

Платформа

Неприменимо

Имя файла

X86_microsoft-windows-shell32_31bf3856ad364e35_6.1.7601.22503_none_6ec3e88889548dc6.manifest

Версия файла

Неприменимо

Размер файла

1,059,457

Дата (UTC)

06-Nov-2013

Время (UTC)

10:12

Платформа

Неприменимо

Дополнительные файлы для всех поддерживаемых версий x64 под управлением Windows 7 и Windows Server 2008 R2

Имя файла

Amd64_228d6e6efa0f144b0e3153891fddec59_31bf3856ad364e35_6.1.7601.22503_none_3f69116101f5cf33.manifest

Версия файла

Неприменимо

Размер файла

699

Дата (UTC)

06-Nov-2013

Время (UTC)

14:56

Платформа

Неприменимо

Имя файла

Amd64_ab8a5a310911f0a583d4c1b8a0642dba_31bf3856ad364e35_6.1.7601.22503_none_400593ee3163c592.manifest

Версия файла

Неприменимо

Размер файла

1,040

Дата (UTC)

06-Nov-2013

Время (UTC)

14:56

Платформа

Неприменимо

Имя файла

Amd64_microsoft-windows-shell32_31bf3856ad364e35_6.1.7601.22503_none_cae2840c41b1fefc.manifest

Версия файла

Неприменимо

Размер файла

1,058,443

Дата (UTC)

06-Nov-2013

Время (UTC)

09:16

Платформа

Неприменимо

Имя файла

Wow64_microsoft-windows-shell32_31bf3856ad364e35_6.1.7601.22503_none_d5372e5e7612c0f7.manifest

Версия файла

Неприменимо

Размер файла

1,054,916

Дата (UTC)

06-Nov-2013

Время (UTC)

08:14

Платформа

Неприменимо

Дополнительные файлы для всех поддерживаемых версий Windows Server 2008 R2 с архитектурой IA-64

Имя файла

Ia64_bba4409f672758cfdaf3e6e43606e4d6_31bf3856ad364e35_6.1.7601.22503_none_d273341408e6cde2.manifest

Версия файла

Неприменимо

Размер файла

1,038

Дата (UTC)

06-Nov-2013

Время (UTC)

14:55

Платформа

Неприменимо

Имя файла

Ia64_microsoft-windows-shell32_31bf3856ad364e35_6.1.7601.22503_none_6ec58c7e895296c2.manifest

Версия файла

Неприменимо

Размер файла

1,058,441

Дата (UTC)

06-Nov-2013

Время (UTC)

08:22

Платформа

Неприменимо

Имя файла

Wow64_microsoft-windows-shell32_31bf3856ad364e35_6.1.7601.22503_none_d5372e5e7612c0f7.manifest

Версия файла

Неприменимо

Размер файла

1,054,916

Дата (UTC)

06-Nov-2013

Время (UTC)

08:14

Платформа

Неприменимо

Ссылки

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

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

Вы тут: Главная Windows Как обойти ограничение на длину пути при создании или копировании файла

У читателя Александра подопечный юзер спросонья удалил важный файл из сетевой папки. Админ, заранее подстеливший соломку, успокоил беднягу и уверенно открыл вчерашние теневые копии. Файл там был, но в нагрузку с ним шли грабли.

[+] Сегодня в программе

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

Цитирую письмо:

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

И неудивительно, с таким-то путем! :)

\\localhost\D$\sales\0-Коммерческий отдел (общий ресурс-обмен)\Общий ресурс (тел., реестры,реквизиты)\КЛИЕНТЫ С 2014\Стратегия\Договор аренды с выкупом_Клиент_27.06.14\Вар дог._25% аванс_с выкупом_17.07.14 (Today, July 22, 2014, 3 hours ago)\3 вар_договор аренды с правом выкупа_6443-001 от 17.07.14.pdf

Графический интерфейс теневых копий выпилили только из Windows 8, а на серверной ОС он сохранился, и свойства папки выглядят аналогично Windows 7.

Снимок экрана любезно предоставил Вадимс Поданс

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

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

Так или иначе, я получил письмо в метро, и поэтому с телефона по-быстрому отправил ответ, который должен был обойти препятствие. Я предложил создать символическую ссылку на часть пути:

mklink /d c:\link "\\localhost\D$\sales\0-Коммерческий отдел (общий ресурс-обмен)\Общий ресурс (тел., реестры,реквизиты)\"

Теперь копирование файла в C:\link должно было вернуть его на прежнее место. И это сработало :)

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

subst V: "\\localhost\D$\sales\0-Коммерческий отдел (общий ресурс-обмен)\Общий ресурс (тел., реестры,реквизиты)\"

Команда subst сопоставляет папку букве диска, и при желании одной командой можно моментально занять все буквы! В принципе, если путь супер-длинный, это может пригодиться, т.к. придется создавать серию сопоставлений.

Эксперимент

Хотите проверить, как все выглядит на практике? Я подготовил для вас CMD-файл (скачать), этапы работы которого вы можете наблюдать в проводнике. Запускайте файл от имени администратора, иначе символическая ссылка не получится. Я проверял работу файла только в Windows 8.1, но он должен работать и в предыдущих ОС.

Код командного файла для экспериментов

Поскольку пояснения кириллические, файл нужно сохранять в кодировке MS-DOS (подсказка – у вас всегда пока есть WordPad :)

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

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

При создании нового текстового документа (стандартное имя длинное):

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

Разные консольные команды тоже на свой лад сообщают об ограничении.

Дискуссия

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

А вы давно сталкивались с ограничением на длину пути? Напишите в комментариях, как вы справились с проблемой или какое еще решение вы знаете. Я специально не указал все решения задачи:)


Upd. В комментариях читатели поделились своим опытом по обходу ограничения на длину пути:

  • FAR (файловый менеджер)
  • robocopy (утилита командной строки, входящая в состав современных Windows)

Думаю, вам, как и мне, не раз приходилось видеть пути вида \!!! Важное\____Новое____\!!! Не удалять!!!\Приказ №98819-649-Б от 30 февраля 1985г. о назначении Козлова Ивана Александровича временно исполняющим обязанности руководителя направления по сопровождению корпоративных VIP-клиентов и организации деловых встреч в кулуарах.doc.

И зачастую открыть такой документ в Windows сходу не получится. Кто-то практикует workaround в виде мапирования дисков, кто-то использует файловые менеджеры, умеющие работать с длинными путями: Far Manager, Total Commander и им подобные. А еще многие с грустью наблюдали, как созданный ими PS-скрипт, в который было вложено немало труда и который в тестовом окружении работал на ура, в боевой среде беспомощно жаловался на непосильную задачу: 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.
Как оказалось, 260 символов хватит «не только лишь всем». Если вам интересно выйти за границы дозволенного — прошу под кат.

Вот лишь некоторые из печальных последствий ограничения длины файлового пути:

  • на сервере есть папка, например, D:\Data\Shared\Accounting, которая расшарена по SMB и монтируется пользователям как сетевой диск S; пользователи создают файлы, которые не смогут прочитать админы/скрипты при локальном доступе с сервера, т.к. абсолютный путь получается длиннее сетевого;
  • ошибки синхронизации перемещаемых профилей;
  • проблемы с восстановлением из теневых копий;
  • при переносе данных из других систем, в которых менее жёсткие ограничения к длине пути, в новом окружении часть из них станет недоступной без танцев с бубном;
  • неверные данные при подсчете размеров и количества файлов в папках;
  • etc…

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

Еще хотелось бы обратить внимание на очень полезную и не раз меня выручавшую утилиту robocopy. Ей тоже не страшны длинные пути, да и умеет она многое. Поэтому если задача сводится к копированию/переносу файловых данных, можно остановиться на ней. Если нужно пошаманить со списками контроля доступа в файловой системе (DACL), посмотрите в сторону subinacl. Несмотря на солидный возраст, отлично себя показала на Windows 2012 R2. Тут рассмотрены способы применения.

Мне же было интересно научить работать с длинными путями PowerShell. С ним почти как в бородатом анекдоте про Ивана-Царевича и Василису Прекрасную.

Быстрый способ

Перейти на

Linux и не париться

Windows 10/2016/2019 и включить соответствующий параметр групповой политики/твикнуть реестр. Подробно на этом способе останавливаться не буду, т.к. в сети уже много статей на эту тему, например, эта.

Учитывая, что в большинстве компаний много, мягко говоря, не свежих версий операционных систем, способ этот быстрый только для написания на бумаге, если, конечно, вы не из тех счастливчиков, у которых мало legacy-систем и царят Windows 10/2016/2019.

Долгий способ

Тут сразу оговоримся, что изменения не затронут поведение проводника Windows, а дадут возможность использовать длинные пути в командлетах PowerShell, таких как Get-Item, Get-ChildItem, Remove-Item и др.

Для начала обновим PowerShell. Делается на раз-два-три.

  1. Обновляем .NET Framework до версии не ниже 4.6 (вообще, PowerShell 5.1 установится и на 4.5, но, судя по жалобам на форумах, некоторые PS-командлеты при такой конфигурации могут работать неправильно). Операционная система должна быть не ниже Windows 7 SP1/2008 R2. Актуальную версию загрузить можно здесь, дополнительную информацию почитать тут.
  2. Скачиваем и устанавливаем Windows Management Framework 5.1
  3. Перезагружаем машину.

Трудолюбивые могут сделать описанные выше шаги вручную, ленивые — с помощью SCCM, политик, скриптов и

эникеев

других средств автоматизации.

Текущую версию PowerShell можно узнать из переменной $PSVersionTable. После обновления должно быть примерно так:

Теперь при использовании командлетов Get-ChildItem и ему подобных вместо привычного Path будем использовать LiteralPath.

Формат путей при этом будет немного другим:

Get-ChildItem -LiteralPath "\\?\C:\Folder"
Get-ChildItem -LiteralPath "\\?\UNC\ServerName\Share"
Get-ChildItem -LiteralPath "\\?\UNC\192.168.0.10\Share"

Для удобства преобразования путей из привычного формата в формат LiteralPath можно использовать вот такую функцию:

Function ConvertTo-LiteralPath {
Param([parameter(Mandatory=$true, Position=0)][String]$Path)
    If ($Path.Substring(0,2) -eq "\\") {Return ("\\?\UNC" + $Path.Remove(0,1))}
    Else {Return "\\?\$Path"}
}

Обратите внимание, что при задании параметра LiteralPath нельзя использовать подстановочные символы (*, ? и т.д.).

Помимо параметра LiteralPath, в обновленной версии PowerShell командлет Get-ChildItem получил параметр Depth, с помощью которого можно задавать глубину вложенности для рекурсивного поиска, я пару раз его использовал и остался доволен.

Теперь можно не бояться, что ваш PS-скрипт собьется с долгого тернистого пути и не разглядит далекие файлы. Меня, например, очень выручил этот подход при написании скрипта для сбрасывания атрибута «временный» у файлов в DFSR-папках. Но это уже другая история, о которой я постараюсь рассказать в другой статье.
UPD 06.07.2019: Обещанная статья
От вас же жду интересных комментариев и предлагаю пройти опрос.
UPD 23.07.2020: Если командлет Get-ChildItem выдает ошибку «путь содержит недопустимые знаки», обновите .NET Framework до актуальной версии (за уточнение спасибо mordaden).

Полезные ссылки:
docs.microsoft.com/ru-ru/dotnet/api/microsoft.powershell.commands.contentcommandbase.literalpath?view=powershellsdk-1.1.0
docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-5.1
stackoverflow.com/questions/46308030/handling-path-too-long-exception-with-new-psdrive/46309524
luisabreu.wordpress.com/2013/02/15/theliteralpath-parameter

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Актуальна ли для вас проблема длинных путей?

13.48% Была актуальна, но уже решил24

23.6% Мешает, но не сильно42

15.73% Не думал об этом, вроде все работает28

0.56% Другое (укажите в комментариях)1

Проголосовали 178 пользователей. Воздержались 27 пользователей.

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

В сегодняшней статье мы расскажем вам, что вызывает рассматриваемую ошибку и как от нее избавиться в кратчайшие сроки.

Что вызывает ошибку «Слишком длинное имя файла»?

слишком длинное имя файла

Майкрософт выставили ограничения на максимальную длину путей и имени файлов в Windows 10 и Windows 11. Пользователю нужно подстраиваться под следующие рамки:

  • макс. длина путей (+ имя и расширение) — 260 символов;
  • макс. длина названия файлов/папок — 255 символов.

Вот вам для примера расположение исполняющего файла игры Elden Ring с целевым путем в 54 символа:

D:\Steam\steamapps\common\ELDEN RING\Game\eldenring.exe

Ошибка «Слишком длинное имя файла» (и другие ее вариации) возникают перед пользователем тогда, когда тот пытается выполнять действия с файлами/папками, которые обладают либо слишком длинными именами, либо слишком длинными целевыми путями для своего расположения.

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

Решение ошибки «Слишком длинное имя файла»

Пожалуй, самое очевидное решение в данной ситуации — это укорачивание пути/имени папки/файла. Как только это будет сделано, ОС перестанет ругаться и без задержек даст завершить начатое. Если укорачивание не представляется возможным, то в настройках ОС можно активировать поддержку длинных путей. Делается это разными способами — все зависит от редакции вашей Windows.

Windows 10/11 Домашняя

  • Нажмите WIN+R для вызова диалогового окошка «Выполнить»;
  • пропишите в пустой строке Regedit.exe и нажмите ENTER;
  • с помощью адресной строки окошка перейдите по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem;
  • найдите в списке справа параметр LongPathsEnabled и дважды кликните на него ЛКМ;
  • задайте параметру значение 1 (один) и сохраните внесенные изменения, перезагрузив ПК.

Windows 10/11 Профессиональная/Корпоративная

  • Нажмите WIN+R для вызова диалогового окошка «Выполнить»;
  • пропишите в пустой строке Gpedit.msc и нажмите ENTER;
  • в панель слева перейдите по пути «Конфигурация компьютера»→«Административные шаблоны»→«Система»→«Файловая система»;
  • кликните дважды ЛКМ по параметру «Включить длинные пути Win32»;
  • активируйте параметр, задав ему значение «Включено»;
  • сохраните внесенные изменения и перезагрузите ПК.

Что делать, если ошибка появляется даже с поддержкой длинных путей

К сожалению, вы гарантировано столкнетесь с ошибкой «Слишком длинное имя файла», даже если активируйте поддержку длинных путей. Дело в том, что данная поддержка не распространяется на отдельные приложения, например, Word, Photoshop, Premiere, и даже системный Проводник.

Чтобы полноценно работать с длинными путями и именами, которые выходят за рамки ограничений, нужно устанавливать сторонние файловые менеджеры. Но на какие из них обратить внимание? Рекомендуем взглянуть на следующие программы:

  • 7-ZIP
  • Far Manager
  • Directory Opus
  • Explorer++
  • One Commander
  • Total Commander
  • WinRAR

Технически, некоторые из них не являются «чистокровными» файловыми менеджерами, но даже с их помощью можно выполнить, например, удаление или перемещение файлов/папок, которые демонстрируют ошибку «Слишком длинное имя файла». Не все они бесплатны — имейте это ввиду.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows 10 flibustier форум
  • Установщик модулей windows 7 грузит процессор
  • Security update for windows server 2012 r2
  • Windows xp reduced media edition
  • Как установить windows через биос с жесткого диска