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

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

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

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

Читайте также  Рост 160 в футах и дюймах

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

Параметры для 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 скопировать все элементы внутри к месту назначения. Копирование оставляет оригиналы там, где они есть, и делает все новые в месте назначения.

Читайте также  Приложения яндекса для ios

Переместить каталог с помощью 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, чтобы убедиться, что она пропала.

Вот и все

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

Привет всем! Хочу немного написать об одной интересной программе, которую открыл для себя совсем не давно и практически случайно. Можно сказать, что в повседневной работе именно её функционала мне и не хватало! А, как выяснилось, эта программа штатно идёт с операционной системой уже с 7-ой версии. А при дополнительных ухищрениях доступна даже в XP-шке.

Пользуясь моментом хочу порекомендовать отличный сервис обслуживание компьютерных сетей. Эти ребята оказывают множество услуг IT-тематики, в том числе монтаж СКС, разработку ПО и интеграцию сервисов.

Суть проблемы

Итак, опишу немного проблему, чтобы вы поняли, о чём идёт речь. Иногда случается такая ситуация, когда путь к каким-либо файлам в операционной системе Windows начинает превышать примерно 260 знаков и с папками или файлами, находящимися “глубже” этого ограничения поделать уже ничего нельзя без дополнительных танцев с бубнами. Будем полагать, что штатный проводник Windows (и многие другие программы) с такими большими путями работать не могут. Но есть ряд программ, которые могут и этим самым доставляют немало хлопот потом. Возможно вы видели нечто подобное:

Такое бывает при работе программ восстановления данных (та же R-Studio переваривает длинные пути, даёт сохранить на компьютер), или при сохранении веб-страниц, распаковке архивов и т.д. Причём удалить такие папки тоже может быть проблематично.

Решение

Способ 1. Subst

Раньше я делал так – с использованием команды subst создавал новую точку монтирования в виде логического диска и прятал за него часть длинного пути. Иной раз повторял раз по 5, чтобы добраться до самого дна и начать удалять эти папки. Ведь удалить их штатным способом не представлялось возможным.

Читайте также  Сколько вариантов в 4 значном коде

Всякие там Unlocker, Far, Total Commander и прочие – не помогали.

Выполним ряд команд:

> subst K: "D:verylongpathnamesomeofthepath
ameofthelongfilenameyetanotherlongdirla-bla-bla-bla-path1la-bla-bla-bla-path2la-bla-bla-bla-path2Documents and SettingsverylognusernameApplication dataLocal SettingsSaved Pages"

Теперь в системе появится новый логический диск K:, внутри которого будет остаток пути “LongDirNameСохранённые страницыУдалить потомНикогда не удалять. Последняя папкаНовая папкаНовая папка (1)Новая папка (2)Новая папка (4)Окончательный отчётПоследняя версияУдалитьОтправленоС чёрной флешкиСкинутьОт ДимонаПрисланноеДокументыНовый документ Microsoft Word.doc”

Но и его удалить не получится, нужно делать новую точку монтирования:

> subst L: "K:LongDirNameСохранённые страницыУдалить потомНикогда не удалять. Последняя папкаНовая папкаНовая папка (1)Новая папка (2)Новая папка (4)Окончательный отчётПоследняя версияУдалитьОтправленоС чёрной флешкиСкинуть"

Появится новый диск L:, внутри которого остались “От ДимонаПрисланноеДокументыНовый документ Microsoft Word.doc

Содержимое L: можно удалить, так как путь уже не такой длинный, затем удалить сам L:

Теперь можно удалить содержимое K:, а затем и сам K:. Ну и остаток пути теперь тоже удалится. Вот так раньше делал я.

Муторно, не правда ли? Не то слово, иной раз приходилось занимать 5-6 букв, чтобы добраться до низа. А там ещё папки ветвились.

Способ 2. Команда robocopy

Совершенно случайно натолкнулся на эту команду. В Windows 7 уже идёт штатно, существует и в более современных версиях. Это просто бомба! Богатый функционал, позволяющий как делать задания на копирования и синхронизацию каталогов, так и, при определённом баловстве ключами, удалять вот такие длинные каталоги. Есть ключи для того, чтобы сделать “зеркало” каталога. Так вот, если сделать зеркало пустого каталога, то целевой каталог тоже станет пустым. Пример такой:

Мы хотим отрезать часть пути из нашего примера до “D:verylongpathnamesomeofthepath”. Выполним команду:

> robocopy "D:empty" "D:verylongpathnamesomeofthepath
ameofthelongfilename" /MIR

MIR – обозначает в данном случае Mirror. И наш последний каталог nameofthelongfilename будет содержать то же самое, что и каталог D:empty – т.е. пустой. Его можно и удалить при желании.

Посмотрите хелп по этой программе, она реально обладает богатым функционалом. При помощи её я копировал файлы на тот же диск, оставляя прежние атрибуты времени. А как мы смотрели в предыдущей статье, копирование файла создаёт новую запись MFT и у неё будут текущие атрибуты времени (а иногда нужно оставить прежние).

Вчера столкнулся с ситуаций когда копировал жесткий диск глав буха на его новый комп и у меня вылетела ошибка при копировании «имена файлов слишком длинны для помещения в эту целевую папку»

дело в том что папки и вложенные в них папки превысили 260 символов и у вас не получится их не скопировать не удалить.

Как из вариантов можно просто переименовать эти папки в более короткий путь либо воспользоваться программой Total Commander и при копировании через нее проделать небольшую операцию

  1. Выделите папку в Total Commander которую надо скопировать
  2. нажмите меню Файл -> Изменить Атрибуты
  3. и приведите настройки к такому виду:

    т.е. снимаем галочку со всех атрибутов «Архивный», «Только для чтения», «Системный», «Скрытый» и ставим галочку «Обрабатывать содержимое каталогов»
  4. все !вот такая простая заметочка которая сэкономит вам нервы и время :0)
Ссылка на основную публикацию
Adblock
detector