Как исправить проблему «Имя файла слишком длинное» в Windows

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

Будем надеяться, что вы столкнулись только с простыми исправлениями, но мы подготовим вас и к менее простым, гарантированно работающим исправлениям.

Почему длина имени файла является проблемой даже в Windows?(Why Is Filename Length Even An Issue In Windows?)

Существует долгая история, когда длина имени файла была проблемой для таких операционных систем, как Windows . Было время, когда вы не могли иметь имена файлов длиннее 8 символов плюс 3-символьное расширение файла. Лучшее, что вы могли сделать, это что-то вроде myresume.doc . Это было ограничением конструкции файловой системы.

Ситуация улучшилась с выходом новых версий Windows . Мы перешли от старой ограниченной файловой системы к чему-то, что называется файловой системой новой технологии(New Technology File System) ( NTFS ). NTFS довела(NTFS) нас до того, что имя файла могло иметь длину 255 символов, а длина пути к файлу потенциально могла достигать 32 767 символов. Так как же мы можем иметь слишком длинные имена файлов?

В Windows(Windows) есть такие вещи, как системные переменные. Это переменные, от которых зависит работа Windows, потому что Windows всегда(Windows) будет знать, что означают переменные и где они находятся, даже когда мы перемещаем биты и байты повсюду. Системная переменная MAX_PATH — это та, которая ограничивает имена файлов и пути к файлам до 260 символов.

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

Как же нам это исправить?

Легкое исправление(The Easy Fix)

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

C:\User\guymc\Documents\My Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx

Понятно, кто в данном случае преступник. Найдите файл в проводнике Windows(Windows Explorer) или проводнике, как(File Explorer) он называется в Windows 10 , щелкните его один раз, нажмите F2 , чтобы переименовать его, и измените это глупое имя файла на что-то более разумное. Проблема(Problem) решена.

Менее простые исправления(The Less Easy Fixes)

Не всегда так просто решить эту проблему. Иногда вы не можете изменить имена файлов или каталогов по какой-либо причине.

Следующие решения помогут вам. Их не трудно сделать.

Перемещение(Move) , удаление(Delete) или копирование файлов или каталогов с помощью PowerShell(Or Copy Files Or Directories Using PowerShell)

Иногда вы получаете сообщение об ошибке при попытке переместить, удалить или скопировать каталоги, в которых количество символов в пути к файлу превышает 260.

Обратите внимание, что слова «каталог» и «папка» взаимозаменяемы. В дальнейшем мы будем использовать 'directory'. Следующие командлеты PowerShell также можно использовать с файлами.

Возможно, путь к файлу выглядит примерно так:

C:\Users\guymc\Documents\This\Is\Exactly\The\Precise\Directory\Path\That\I\Need\To\Have\To\Keep\My\Files\Sorted\In\A\Manner\That\Makes\Sense\To\Me\So\Lets\Pretend\This\Is\An\Actual\Filepath\That\You\Might\Also\Have\On\Your\Windows\Computer\And\Not\Over\Think\It\Document.docx

Этот путь к файлу имеет длину 280 символов. Таким образом, мы не можем скопировать каталог оттуда в другое место с помощью обычного метода копирования-вставки. Мы получаем ошибку « Слишком длинный путь назначения» .(Destination Path Too Long)

Предположим, что по какой-то причине мы не можем переименовать каталоги, в которые вложен файл. Что мы делаем?

Откройте PowerShell(Open PowerShell) . Если вы еще не использовали PowerShell , ознакомьтесь с нашей статьей «Использование PowerShell для домашних пользователей — руководство для начинающих»(Using PowerShell for Home Users – A Beginner’s Guide) . Однако вы можете сделать следующие шаги, не читая статью.

Когда PowerShell откроется, вы окажетесь в корне каталога пользователя. Продолжайте, предполагая , что C:\Users\guymc (Follow) это ваш пользовательский каталог.

Каталог с именем This находится внутри каталога Documents . Чтобы перейти в каталог Documents , мы используем (Documents)DOS - команду cd Documents

Вы увидите приглашение измениться на C:\Users\guymc\Documents . Это хорошо. Мы работаем ближе к каталогам, что облегчит задачу.

Копировать каталог с помощью Copy-Item

Мы хотим скопировать каталог This и его содержимое в ThatNewFolder . Воспользуемся командлетом PowerShell Copy-Item с параметрами -Destination и -Recurse .

-Destination сообщает PowerShell , где мы хотим разместить копию. -Recurse указывает PowerShell скопировать все элементы внутри в место назначения. Копирование оставляет оригиналы там, где они есть, и создает все новые в месте назначения.

Copy-Item This -Destination ThatNewFolder -Recurse

Переместить каталог с помощью Move-Item

Допустим, мы хотим переместить каталог This и все каталоги и файлы в нем в ThatNewFolder . Перемещение не оставляет оригинал на месте.

Мы можем использовать командлет PowerShell Move-Item с параметрами -Path и -Destination . -Path определяет элемент, который мы хотим переместить, а -Destination сообщает PowerShell , куда мы хотим его переместить. 

Командлет поместит This внутрь ThatNewFolder . Он также переместит все, что находится внутри этого каталога. Move-Item можно использовать для перемещения файлов или каталогов, и он работает независимо от пути к файлу или длины имени файла.

Move-Item -Path This -Destination ThatNewFolder

Чтобы убедиться, что это работает, используйте команду cd ThatNewFolder , чтобы войти в ThatNewFolder . Затем используйте команду dir , чтобы вывести список каталогов в ThatNewFolder . Вы увидите, что этот каталог находится там.

Удалить каталог с помощью Remove-Item

Если мы хотим удалить этот(This ) каталог и все, что в нем, мы используем командлет Remove-Item .

Командлет Remove - Item(Remove-Item) имеет встроенную защиту, которая затрудняет удаление каталога с вещами внутри него. В нашем примере мы знаем, что хотим удалить все, поэтому мы будем использовать параметры -Recurse , чтобы он удалял все внутри, и -Force , чтобы он делал это, не спрашивая нас, уверены ли мы в каждом элементе внутри.

Имейте в виду! Восстановить что-либо удаленное таким образом было бы чрезвычайно сложно. Вы можете попробовать методы, описанные в разделе Как восстановить случайно удаленные файлы , но не ожидайте многого.

Remove-Item This -Recurse -Force

Вы можете снова использовать команду dir, чтобы убедиться, что она исчезла.

Заставить Windows 10 принимать длинные пути к файлам(Make Windows 10 Accept Long File Paths)

Если вы знаете, что будете постоянно использовать длинные пути к файлам и длинные имена файлов, проще заставить Windows работать на вас. Нет смысла использовать PowerShell для ежедневной работы.

Есть два способа сделать это. Один предназначен для пользователей Windows 10 Home , а другой — для пользователей Windows 10 Pro или Enterprise . Эти методы могут работать в Windows 8.1 и более ранних версиях, но мы не можем этого гарантировать.

Заставить(Make) Windows 10 Home принимать длинные пути к файлам(Home Accept Long File Paths)

Чтобы Windows 10 Home принимала длинные пути к файлам, нам нужно открыть редактор реестра(Registry Editor) . Если вы раньше не работали с редактором реестра(Registry Editor) , будьте осторожны. Случайное удаление или изменение элементов здесь может привести к полной остановке работы Windows .

Всегда делайте резервную копию реестра, прежде чем вносить какие-либо изменения. Узнайте все, что вам нужно знать об этом, в нашем Полном руководстве по резервному копированию и восстановлению реестра Windows( Ultimate Guide to Backing Up and Restoring the Windows Registry) .

После открытия редактора реестра и создания резервной копии перейдите в папку (Editor)HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem и найдите ключ LongPathsEnabled .

Дважды щелкните LongPathsEnabled . В поле « Значение:(Value data:) » убедитесь, что там стоит число 1 . Нажмите OK , чтобы зафиксировать изменение.

Выйдите из редактора реестра(Registry Editor) , и теперь вы сможете работать с безумно длинными путями к файлам.

Заставьте(Make) Windows 10 Pro или Enterprise принимать длинные пути к файлам(Pro Or Enterprise Accept Long File Paths)

Чтобы позволить Windows 10 Pro или Enterprise использовать длинные пути к файлам, мы будем использовать редактор групповой политики(Group Policy Editor) . Это инструмент, который позволяет нам устанавливать политики в отношении того, как Windows работает на уровне компьютера и на уровне пользователя.

У нас есть несколько статей об использовании групповой политики для таких действий, как отключение или включение параметров Internet Explorer( disabling or enabling Internet Explorer options) или добавление сообщения на экран входа в систему( adding a message to the logon screen) .

Откройте редактор групповой политики(Group Policy Editor) , перейдя в меню « Пуск(Start) » и введя gpedit . Верхним результатом должно быть Изменить групповую политику(Edit group policy) . Дважды щелкните по нему.

Когда откроется редактор групповой политики(Group Policy Editor) , перейдите в « Computer Configuration > Administrative Templates > System > Filesystem . Там вы увидите политику Enable Win32 long paths .

Дважды щелкните по нему, чтобы изменить параметр политики. Измените его с Disabled на Enabled , затем нажмите кнопку OK , чтобы зафиксировать изменение. 

Политика может не вступить в силу сразу. Однако вы можете принудительно обновить групповую политику( force the group policy to update) .

Это оно(That’s It)

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



About the author

Я опытный инженер-программист с более чем 10-летним опытом разработки и поддержки приложений Microsoft Office. У меня есть сильное желание помогать другим достигать их целей, как благодаря моей работе в качестве инженера-программиста, так и благодаря моим навыкам публичных выступлений и налаживанию связей. Я также очень хорошо разбираюсь в аппаратных средствах и драйверах клавиатуры, многие из них я разработал и протестировал сам.



Related posts