9 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Длинные имена файлов не копируются

Содержание

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

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

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

Почему длина имени файла является проблемой в Windows?

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

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

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

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

Настройка Windows 10 на обработку длинных путей к файлам

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

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

Параметры для Windows 10 Home

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

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

Открыв редактор реестра и сделав резервную копию, перейдите в папку HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem и найдите ключ LongPathsEnabled.

Дважды щелкните LongPathsEnabled. Убедитесь, что в поле Значение данные: номер 1 указан. Нажмите OK, чтобы подтвердить изменения.

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

Параметры для Windows 10 Pro или Enterprise

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

Откройте редактор групповой политики, перейдя в меню «Пуск» и набрав gpedit . Лучший результат должен быть Изменить групповую политику. Дважды щелкните по этому.

После открытия редактора групповой политики перейдите к Конфигурация компьютера → Административные шаблоны → Система → Файловая система. Там вы увидите политику включения длинных путей Win32.

Дважды щелкните по нему, чтобы изменить параметр политики. Измените его с «Отключено» на «Включено», затем нажмите кнопку «ОК», чтобы зафиксировать изменение.

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

Как временно исправить проблему с файлами?

Легкое Исправление

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

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

Менее простые исправления

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

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

Читать еще:  Как удалить временные файлы с компьютера вручную

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

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

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

Этот путь к файлу составляет 280 символов. Поэтому мы не можем скопировать каталог оттуда куда-либо еще с помощью обычного метода копирования-вставки. Мы получаем ошибку Destination Path Too Long.

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

Когда откроется PowerShell, вы окажетесь в корне своего пользовательского каталога. Продолжайте, предполагая, что C:Usersguymc — ваш пользовательский каталог.

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

Вы увидите быстрое изменение текущего каталога на C:UsersguymcDocuments. Это хорошо. Мы работаем ближе к каталогам, которые облегчат жизнь.

Копирование каталога с использованием Copy-Item

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

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

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

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

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

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

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

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

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

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

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

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

Вот и все

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

Длинные имена файлов не копируются

Question

Задача «простая» — скопировать каталог с несколькими сотнями тысяч вложенных объектов (каталогов и файлов) с сохранением прав доступа. Проблема в том что многие каталоги имеют очень длинные имена (находил до 500 символов).

Пытался читать про это на английском, но так и не понял до конца:

Файловая система (NTFS) поддерживает пути до 32767 символов юникода.
ОС, начиная аж с Windows NT, позволяют поддерживают такие пути с использованием Unicode API.

Почему же до сих пор нет файловых менеджеров умеющих работать с такими путями ? (Или есть?)
Даже explorer Windows Server 2008 спотыкается об ограничение в 260 символов !

Можно всё таки как-то работать с такими путями ?

Answers

Когда столкнулся с таким, то догадался использовать команду subst (subst /?)
Подключаешь папку поглубже как диск и тебе снова даётся 260 символов от этого диска 🙂

А вообще эта проблема, как оказалось, классифицируется как «won’t fix». Почему так, написано здесь.

P.S. Программка от MS умеет с длинными путями работать ещё, robocopy называется. Скачать тут. GUI к ней качается отдельно, если нужен.

  • Marked as answer by someparty Saturday, May 9, 2009 5:39 AM

All replies

Когда столкнулся с таким, то догадался использовать команду subst (subst /?)
Подключаешь папку поглубже как диск и тебе снова даётся 260 символов от этого диска 🙂

А вообще эта проблема, как оказалось, классифицируется как «won’t fix». Почему так, написано здесь.

P.S. Программка от MS умеет с длинными путями работать ещё, robocopy называется. Скачать тут. GUI к ней качается отдельно, если нужен.

  • Marked as answer by someparty Saturday, May 9, 2009 5:39 AM

Ice1374 спасибо за ответ !

Robocopy это похоже именно то что нужно!

Указанную Вами статью я уже читал, но так и не понял почему оно «won’t fix».
Да и само существование такой программы как robocopy говорит о том что фикс всё таки возможен.

Чего я не понимаю ?

Насколько я понял, причин несколько и все они лежат очень глубоко, чтобы их исправлять.

В статье идёт только описание проблем, почему платформа .NET не может работать с длинными путями. Ответ однозначен: потому что платформа .NET находится в сильной зависимости от WinAPI, причём ANSI, а не Unicode. Отделяться от WinAPI очень муторно, потому что надо перелопатить и почти продублировать тонны кода.
При этом, есть возможность обратиться к Unicode WinAPI, но при этом почему-то отключаются проверки строк на наличие «опасных» символов, потенциально могущих привести к бреши в безопасности. Так как платформа .NET доверяет инфе, полученной от WinAPI, то тоже не считает нужным делать такие проверки.
Обходные пути конечно есть, но общего решения не выработано.

Читать еще:  CTB Locker как расшифровать файлы

Использование ANSI обусловлено желанием обеспечить совместимость существующих приложений. Почему в ANSI WinAPI ограничение на 256 символов — это тайна, покрытая мраком 🙂 Вроде, для обеспечения совместимости с 16-битными приложениями.

Ответ от MS намного проще, но вводит в размышления. Ограничение есть потому, что в WinAPI есть переменная MAX_PATH, равная 260 символам. Большинство функций завязано на этой переменной и поэтому её не изменить 🙂

Да и в конце концов, ситуация пока возникает не так часто, чтобы над ней ломать голову.

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

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

Длинный у нас получился заголовок получился, но он указывает на суть проблемы, которая будет здесь описана. Недавно я столкнулся с не очень хорошей ситуацией. Сортируя файлы на жёстком диске и очищая его от ненужного, я обнаружил, что один из файлов не удаляется, а появляется ошибка следующего содержания: «Файловая система не поддерживает такие длинные имена исходных файлов. Попробуйте перенести файл в папку с меньшей длиной пути или укажите более короткое имя файла и повторите попытку».

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

На самом деле проблема решается очень просто и быстро, и сейчас я опишу два метода её решения, а каким пользоваться решать только вам.

Что делать, если слишком длинный путь к источнику, как удалить такой файл?

При наличии файла, который не удаляется из-за длинного имени, решить проблему можно несколькими вариантами. Например, файл вложен в несколько каталогов, допустим, пять или даже десять папок, которые имеют названия по 10-20 знаков, то это и может быть причиной не удаления файла. Дело в том, что Windows не поддерживает любые файлы, в названиях которых больше 260 символов. Если этот предел превышен, то появится ошибка, которую я показал выше. Количество папок, имеющие свои названия и само имя файла в сумме должны давать менее 260 символов. В системе также есть одна особенность – при превышении этого ограничения мы всё-таки можем переименовывать папки. А это значит, что необходимо переименовать все папки на короткое имя, например, буква или цифра.

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

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

Открываем командную строку. Для этого нажимаем сочетание Win+R и вводим команду cmd. Можно нажать правой кнопкой мыши по меню Пуск (Либо сочетание клавиш Win+X) и выбрать там командную строку.

Теперь вы пишите такую команду, которая сделает для нас виртуальный диск:

Нужно выбрать такую букву диска, которая не занята другими. Системный раздел обычно указывается буков C, а второй раздел, как D или E, тогда выбираем любую другую.

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

У меня эта команда выглядит следующим образом:

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

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

Используем Total Commander

В интернете я обнаружил метод, который позволяет удалить не удаляемые файлы при помощи утилиты Total Commander. Конечно, минус тут в том, что придётся устанавливать дополнительный софт на компьютер, а это не все захотят делать. В любом случае оставлю этот способ здесь, вдруг кто захочет воспользоваться.

Скачиваем и устанавливаем программу. Идём во вкладку «Файл» щелкаем по разделу «Изменить атрибуты». Появляется окошко, где убираем галки со всех атрибутов. Если вверху не стоит галочка напротив пункта «Обрабатывать содержимое каталогов» – выбираем. Теперь из этой же программы пробуем удалить файл с длинным именем.

Используем архиватор 7-Zip

Для этого дела нам понадобится архиватора 7-Zip. Нажимаем правой кнопкой мыши по начальному каталогу и направляем мышь на раздел «7-Zip» и выбираем пункт «Добавить к архиву».

Появляется окно, в котором вам нужно отметить только одну галочку «Удалять файлы после сжатия». Потом нажимаете ОК.

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

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

Ошибка ″слишком длинный путь″ (path too long) в Windows 10

Практически каждый пользователь Windows рано или поздно сталкивается с ошибкой ″слишком длинный путь″ (path too long). Ошибка эта возникает при работе с файлами или папками, у которых полный путь превышает значение в 260 символов.

Читать еще:  Как удалить временные файлы в Windows xp

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

Соответственно, если сумма всех компонентов пути больше 260 символов, то путь считается слишком длинным. Большинство приложений Windows не умеют работать с такими путями и при обращении к файлупапке выдадут примерно такое сообщение:

Что интересно, значение в 260 символов обусловлено значением MAX_PATH Win32 API. У файловой системы NTFS максимальная длина пути ″немного″ больше и составляет 32767 символов. Для обхода ограничений Win32 API некоторые приложения используют формат UNC, указывая абсолютный путь с префиксом ?, например так:

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

Групповые политики
Первым делом открываем редактор локальных групповых политик, для чего жмем клавиши Win+R и выполняем команду gpedit.msc.

Нужная нам политика находится в разделе Конфигурация компьютераАдминистративные шаблоныСистемаФайловая система (Computer configurationAdministrative templatesSystemFilesystem) и называется Включить длинные пути Win32 (Enable Win32 long paths).

Для активации поддержки длинных путей надо перевести политику в состояние «Включено».

Реестр
Для включения поддержки длинных путей через реестр необходимо найти в разделе HKLMSystemCurrentControlSetControlFileSystem параметр с именем LongPathEnabled и задать его значение равным 1.

Эту операцию можно произвести с помощью PowerShell, командой:

Set-ItemProperty -Path HKLM:SYSTEMCurrentControlSetControlFileSystem -Name LongPathsEnabled -Value 1

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter .

Облако тегов

АРХИВЫ

Оплата товаров в интернет любой картой MasterCard

    © Тема разработана Sofarider inc. 2020 Все права защищены.

    Слишком длинное имя конечного файла (Windows). Как удалить

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

    Очень много вложенных папок создают слишком длинное имя целевого пути.

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

    Я не знаю почему, но интуитивно мне пришло в голову решение проблемы. Заходим в Total Commander, находим корневую папку, которую нужно удалить /копировать/ переместить. Выделяем ее и выбираем пункт меню: Файлы -> Изменить атрибуты. Снимаем галочку со всех атрибутов «Архивный», «Только для чтения», «Системный», «Скрытый» и ставим галочку «Обрабатывать содержимое каталогов».

    В Total Commander снимаем галочки со всех атрибутов и ставим напротив «Обрабатывать содержимое каталогов».

    Нажимаем ОК и после этого любые операции с файлами / папками будут возможны.

    Слишком длинное имя файла в Windows (путь к источнику)

    Вредная операционная система Windows не даёт удалить файл и кричит, что у него «Слишком длинный путь к источнику»?

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

    Слишком длинный путь к источнику — почему?

    Сразу хочу объяснить, почему появляется такое системное предупреждение и не удаётся произвести с файлом (папкой) элементарные действия копирования или удаления…

    В самом уведомлении написан ответ на этот вопрос — файловая система Windows не поддерживает (не понимает) имена исходных файлов длиннее 255 символов.

    Но имя файла или папки короткое, например, «Фото из отпуска»?

    Дело в том, что «глупая» система воспринимает весь путь к файлу как его длинное имя. Если он (или папка) лежат где-то слишком глубоко в файловом менеджере, то это имя будет выглядеть примерно так…

    Вот и собираются символы имени в банду из более 255 штук.

    Как удалить неудаляемый файл или папку в таком случае? Очень просто — нужно сократить слишком длинное имя файла (пути) методом переименования вложенных друг в друга папок.

    Как удалить файл с длинным именем

    Покажу на своём примере, как удалить файл с длинным именем у которого, как пишет система, слишком длинный путь к источнику.

    Читайте также на сайте:

    Вчера решил почистить компьютер от старых резервных копий сайта, а они не захотели удаляться. Как догадались — появилось предупреждение о слишком длинном пути к источнику…

    Начиная с самой первой папки в этом длинном пути — переименовал несколько штук…

    …и повторил попытку избавиться от файла с теперь коротким именем — он благополучно отправился в страну удалённых файлов.

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

    Так просто решается проблема удаления файлов или папок с длинным именем. Это не единственный метод конечно.

    Можно специальными программами удалять или через реестр — лишь показал ручной способ. У кого-то он займёт минуту всего, а у кого-то и полчаса — решать Вам, как сократить длинное имя файла в Windows (слишком длинный путь к источнику).

    Рекомендую

    До новых полезных компьютерных программ и интересных приложений для Андроид.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector