Длинные имена файлов не копируются - TurboComputer.ru
Рейтинг статьи
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, чтобы убедиться, что она пропала.

Вот и все

Читайте также:  Как удалить файлы cookie в Google Chrome

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

subst буква-диска «путь к файлу или папке – это и будет диском»

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

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

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

subst Z: «C:UsersUserDesktop3333333333333333333333333333333333333333333333333333111»

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

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

subst БукваДиска /d

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

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

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

Читайте также:  Как удалить дубликаты файлов автоматически

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

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

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

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

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

Как удалить файл или папку с длинным названием, если Windows не даёт этого сделать!

В данной статье я хочу поделиться с вами парочкой способов решений одной проблемы в Windows, с которой уже несколько раз сталкивался сам. Проблема заключается в том, что Windows не даёт возможность удалить файл или папку с очень длинным названием, а конкретно — путь к которым слишком длинный и превышает размер в 260 символов. При попытке удалить такой файл или папку, вы получите сообщение: «Файловая система не поддерживает такие длинные имена исходных файлов». Такая ситуация может возникнуть, например, тогда, когда у вас сложная структура папок в виде большой «матрёшки». К примеру, в одной папке есть другая папка, в ней в свою очередь ещё одна папка, в ней ещё одна и так далее. И в самом конце этого пути, в последней папке лежит нужный файл. Так вот, если в сумме все названия этих папок по количеству символов превысят 260, то в итоге система не даст вам удалить одну из папок или сразу несколько в самом конце этой «матрёшки» 🙂 А если проблема конснулась файла, только вы его и открыть не сможете, переименовать или даже скопировать. Проще говоря, такой файл будет недоступен!

Вот пример структуры папок, которую я назвал «большой матрёшкой»:

Как видим, на диске «D» (Данные) есть исходная папка видео, в ней папка «Фильмы», в ней «Всё что нужно для просмотра фильмов» и далее таким же образом папка в папке. При этом многие папки имеют длинные названия названия — больше 10-15 символов, что в сумме даст объём символов во всех названиях больше 260. И если в конце такой «матрёшки» будет лежать файлик, то может получиться так, что работать с ним вы не сможете… Иногда сама система не даёт создать в конечном итоге папку или файл превышающий допустимое количество символов, но иногда почему-то такое происходит.

В начале для новичков поясню, что такое путь к файлу и папке. Путь – это так называемый адрес в компьютере, по которому располагается файл или папка. Например, файл под названием «Мой файл.txt» лежит на локальном диске D: в папке «Документы». Тогда путь к этому файлу будет выглядеть так:

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

D:ВидеоМои фильмыВсё что нужно для просмотра фильмовПрограммы для просмотра фильмовКак открывать фильмы MP4Список фильмов-примеров MP4Перечень программ для открытия MP4Что нельзя делать при открытии файлов MP4

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

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

Я попробовал искусственно воссоздать проблему и вот что у меня получилось.

На диске «D» создал папку коротким именем «1» и в неё поместил файл с очень длинным названием. Вот пример:

Теперь я ту папку «1» переименовываю тоже в какое-то очень длинное название, например:

Что интересно, Windows свободно даёт переименовать папку вот в такое длинное название, несмотря на то, что количество символов в названии этой папки + названии файла уже превышает 260! Ну и после такого вот переименования папки в длинное название, я уже не могу удалить файл, расположенный в ней и получаю ошибку, показанную выше на изображении.

Или вот ещё пример… Я обслуживаю сайт Московского приборостроительного техникума, в котором ранее работал на полную ставку и иногда для тестирования каких-то новых «плюшек» для сайта использую копию сайта на своём компьютере. А то вдруг я что-то нехорошее установлю и сайт на хостинге умрёт? 🙂 А так я у себя на компьютере проверяю и если всё в порядке, то уже настраиваю на реальном сайте, расположенном на хостинге. Так вот, один раз я перенёс себе с хостинга весь сайт чтобы протестировать одну вещь и после того как закончил работать, решил удалить с компьютера папку с сайтом. Ведь весит она порядке 6 Гб. Сайт удалился весь, кроме ряда папок. Я начал смотреть и увидел, что не удалились те папки, которые содержали в себе файл с длиннющим названием в виде иероглифов:

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

Как решить проблему удаления папки / файла с длинным названием пути!

Я пробовал 2 способа как можно удалить папку / файл с длинным названием в пути к ним. Оба они технически не сложные (особенное 1-й), поэтому, думаю, сможет справиться новичок если выполнит всё точно также как я показываю:

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

Тогда попробуйте просто переименовать папку, в которой лежит файл с длинным названием, например, в «1». Вернусь к одному из примеров выше. Вот имеется папка с длинным названием:

Переименовываю через стандартный проводник Windows название той папки в «1» и вот как теперь выглядит путь к файлу:

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

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

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

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

Допустим у вас есть примерно такой вот длинный путь:

D:ВидеоМои фильмыВсё что нужно для просмотра фильмовПрограммы для просмотра фильмовКак открывать фильмы MP4Список фильмов-примеров MP4Перечень программ для открытия MP4Что нельзя делать при открытии файлов MP4

Предположим, что в самой последней папке у нас лежит какой-то проблемный файл, с которым мы не можем работать, поскольку путь к нему, как видим, весьма приличной длинны 🙂

Читайте также:  Как переименовать расширение файла в Windows 7

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

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

Открыть её можно через поиск Windows. В поиске так и наберите «Командная строка»:

В окне командной строки нам нужно набрать команду:

subst буква_виртуального_диска «путь_к_папке»

Букву диска вы можете поставить любую, только чтобы она уже не была занята одним из локальных дисков. Например, у вас есть локальный диск C и D, а значит виртуальный диск вы уже не сможете обозвать той же буквой. Можно назвать, например, буквой «X», потому что она редко у кого используется в Windows.

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

D:ВидеоМои фильмыВсё что нужно для просмотра фильмовПрограммы для просмотра фильмов

Итак, итоговая команда в моём случае будет выглядеть вот так:

subst X: «D:ВидеоМои фильмыВсё что нужно для просмотра фильмовПрограммы для просмотра фильмов»

Чтобы выполнить введённую команду, нажимаем клавишу «Enter» на клавиатуре. Виртуальный диск будет создан.

Теперь перейдём в проводник Windows, зайдём в раздел «Этот компьютер» (или «Компьютер») и видим там созданный виртуальный диск:

Отличить его можете по букве. Я присваивал букву «X» виртуальному диску. Теперь если открыть этот виртуальный диск, то мы сразу окажемся в папке «Программы для просмотра фильмов». Т.е. мы взяли и срезали нафиг половину пути к конечной папке.

Ранее путь к конечной папке выглядел так:

D:ВидеоМои фильмыВсё что нужно для просмотра фильмовПрограммы для просмотра фильмовКак открывать фильмы MP4Список фильмов-примеров MP4Перечень программ для открытия MP4Что нельзя делать при открытии файлов MP4

После подключения виртуального диска к папке «Программы для просмотра фильмов» путь к конечной папке выглядит так:

X:Как открывать фильмы MP4Список фильмов-примеров MP4Перечень программ для открытия MP4Что нельзя делать при открытии файлов MP4

Чувствуете разницу? Путь сокращён в два раза, поскольку буква диска сразу же направляет нас к папке в средине пути 🙂 А поскольку путь сильно сокращён, наверняка теперь вы сняли ограничение по символам в названиях файлов и папок и сможете удалить файл или папку с длинным названием!

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

Для этого снова откройте командную строку Windows и введите команду:

Subst буква_виртуального_диска /d

В моём случае буква диска «X», поэтому команда будет выглядеть вот так:

Когда я думал над вариантами решения проблемы, как удалить папку или файл с длинным названием, в интернете находил ещё такой вот вариант: удалить проблемный файл через программу «Total Commander». Попробовал, нифига не получилось, поэтому и советовать такой способ не стал :)) Да и способ, даже если он у кого-то бы и заработал, честно говоря не прикольный, потому что приходится ставить дополнительную программу на свой компьютер ради удаления одного лишь файла или папки с длинным названием…

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

На этом всё! До скорых встреч в следующих статьях 😉

Сделай репост – выиграй ноутбук!

Каждого 1 и 15 числа iBook.pro разыгрывает подарки.

  • Нажми на одну из кнопок соц. сетей
  • Получи персональный купон
  • Выиграй ноутбук LENOVO >Подробно: ibook.pro/konkurs

LENOVO IdeaPad Intel Core i5, 8ГБ DDR4, SSD, Windows 10

Выбираем длинный путь (или прощай MAX_PATH)

Многим пользователям ПК под управлением ОС Windows, не говоря о разработчиках, знакомы проблемы при работе с длинными (более 260 символов, MAX_PATH) путями файлов или каталогов.

В данной статье рассматриваются способы избавления от этого пережитка при разработке приложений на различных платформах (WinApi, .Net Framework, .Net Core) и активации нативной поддержки длинных путей в Windows 10 (Anniversary Update).

Приложения Win API

В приложениях, которые используют Win API для работы с файлами, рецепт избавления от ограничения MAX_PATH был известен с незапамятных времён – необходимо было использовать Unicode версию функции с окончанием «W» для работы с директорией или файлом и начинать путь с префикса \?. Это давало возможность использовать пути длинной до 32767 символов.

В Windows 10 (1607) поведение функций для работы с файлами изменилось: появилась возможность отключить проверку ограничений MAX_PATH на уровне системы.

Это избавляет от необходимости использовать префикса \? и потенциально даёт шанс приложениям, работающим напрямую или косвенно через Win API, получить поддержку длинных путей без необходимости их пересборки. Как активировать эту возможность описано в конце статьи.

.Net Framework

Хотя .Net Framework и использует Win API для работы с файлами — предыдущее изменение не принесло бы результата, т.к. в код BCL встроены предварительные проверки на допустимость длинны имён каталогов и файлов, и до вызова функций Win API дело даже не доходило, выдавая известное исключение. По многочисленным просьбам сообщества (более 4500 на UserVoice) в версии 4.6.2 из кода BCL вырезали проверки ограничения длинны пути, отдав это на откуп операционной и файловой системам!

Вот что это даёт:

  • При использовании префикса “\?” мы можем работать с длинными путями как в Win API,
  • Если активировать нативную поддержку длинных имен файлов Windows 10 (1607), то даже не потребуется использовать префикс!

Как включить:

  • Использовать .Net Framework 4.6.2 как цель при сборке приложения.
  • Использовать конфигурационный файл, например, если приложение уже было собрано под .Net 4.0:

.Net Core

Тут поддержку длинных путей анонсировали ещё в ноябре 2015 года. Видимо сказалось Open Source природа проекта и отсутствие строгой необходимости обеспечения обратной совместимости.

Как включить:
Всё работает из коробки. В отличие от реализации в .Net Framework – тут нет необходимости в добавлении префикса “\?” – он добавляется автоматически при необходимости.

Вот тут можно посмотреть пример.

Как включить поддержку длинных путей в Windows 10 (1607)

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

Включить встроенную поддержку длинных путей можно создав или изменив следующий параметр системного реестра: HKLMSYSTEMCurrentControlSetControlFileSystem Параметр LongPathsEnabled (Тип: REG_DWORD) 1 – соответствует значению включено.

Или через групповые политики (Win+Rgpedit.msc) Computer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths.Оно же в локализованном варианте: Конфигурация компьютера > Административные шаблоны > Система > Файловая система > Включить длинные пути Win32.

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

С CMD, к сожалению, это не сработает, на данный момент, из-за особенностей работы с путями, а в PowerShell должно всё заработать.

На этом мой небольшой пятничный пост заканчивается, оставив за рамками вопросы полноты реализации поддержки длинных путей в Windows 10 (1607), или работоспособность при использовании различных комбинаций редакций Windows, файловых систем и API. По мере поступления новых фактов и результатов экспериментов пост будет обновляться.

Ссылка на основную публикацию
Adblock
detector