Поиск длинных имен файлов в windows 7

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов Pyatilistnik.org. В прошлый раз мы с вами разобрали возможности утилиты PING,

Содержание

  1. Как найти файлы с длинными именами в windows 7
  2. Описание проблемы длинных путей
  3. Методы снимающие ограничения на длину пути в Windows
  4. Нюансы длинных путей в приложениях
  5. Как в Windows 10 отключить ограничение на длину пути в 260 символов через политику
  6. Включение поддержки длинных путей через реестр
  7. Как в Windows 10 отключить ограничение на длину пути в 260 символов через PowerShell
  8. Как удалять, копировать, переносить файлы и папки при ошибке с длинными путями
  9. Как в Windows 10 отключить ограничение на длину пути в 260 символов через командную строку
  10. Обход ограничений длинных путей через 7zFM
  11. Как обойти ограничение длинных путей через символьную ссылку
  12. Как исправить проблему «Имя файла слишком длинное» в Windows
  13. Почему длина имени файла является проблемой в Windows?
  14. Настройка Windows 10 на обработку длинных путей к файлам
  15. Параметры для Windows 10 Home
  16. Параметры для Windows 10 Pro или Enterprise
  17. Как временно исправить проблему с файлами?
  18. Легкое Исправление
  19. Менее простые исправления
  20. Как найти имена файлов, чья длина превышает определённое значение
  21. Как найти файлы с самыми длинными именами
  22. Сортировка файлов по длине имени файла
  23. Выбираем длинный путь (или прощай MAX_PATH)
  24. Приложения Win API
  25. .Net Framework
  26. .Net Core
  27. Как включить поддержку длинных путей в Windows 10 (1607)

Как найти файлы с длинными именами в windows 7

long paths on windows 01

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов Pyatilistnik.org. В прошлый раз мы с вами разобрали возможности утилиты PING, рассмотрели как ее применять на практике. В сегодняшней публикации я вам покажу, как устраняется боль и печаль в операционных системах Windows, я говорю про длинные пути, в своей практике я очень часто встречал жалобы «Слишком длинный целевой путь» или «Слишком длинный конечный путь«, то же самое вы можете встретить и при удалении. Ниже я покажу, как выкручиваться из данной ситуации.

Описание проблемы длинных путей

Тем не менее, файловая система Windows по-прежнему накладывает некоторые ограничения, например, какие символы могут использоваться в именах файлов и общую длину путей. Некоторое время максимальная длина пути составляла 260 символов, но с появлением Windows 10, часть ограничений начала потихоньку уходить, например для приложений и появилась возможность отключить проверку MAX_PATH и использовать длинные пути без префикса \?.

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

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

long paths on windows 02

Тоже самое при копировании в папку, так же выскакивает «Слишком длинный целевой путь».

long paths on windows 03

Вот ошибка при извлечении архива в сетевую папку:

long paths on windows 04

Методы снимающие ограничения на длину пути в Windows

Нюансы длинных путей в приложениях

Есть один нюанс. Этот новый параметр (имеется ввиду та политика и ключ реестра) не обязательно будет работать со всеми существующими приложениями, но он будет работать с большинством. В частности, любые современные приложения должны работать нормально, как и все 64-битные приложения. Старые 32-разрядные приложения должны быть применимы для работы, что на самом деле просто означает, что разработчик указал в файле манифеста приложения, что приложение поддерживает более длинные пути. Большинство популярных 32-битных приложений не должно вызывать проблем. Тем не менее, вы ничем не рискуете, пробуя настройку. Если приложение не работает, единственное, что произойдет, это то, что оно не сможет открывать или сохранять файлы, сохраненные в местах, где полный путь превышает 260 символов.

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

Как в Windows 10 отключить ограничение на длину пути в 260 символов через политику

Чем примечателен данный метод, так это тем, что неподготовленных пользователей он не вынуждает выполнять команды или производить правку реестра, тут все в графическом виде. Так же если у вас есть домен Active Directory и вы хотите массово убрать ошибки «Слишком длинный целевой путь» или «Слишком длинный конечный путь» в приложениях и запретить им проверять MAX_PATH и использовать длинные пути без префикса \?, то групповые политики вам это помогут.

Покажу для начала, как делать через локальную политику, открываете окно «Выполнить» в котором пишите gpedit.msc.

long paths on windows 05

Далее идем по пути:

Найдите тут параметр «Включить длинные пути Win32 (Enable Win32 long paths)«, по умолчанию он отключен, и я честно не понимаю почему. Активируйте его.

long paths on windows 06

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

Включение поддержки длинных путей через реестр

Данный метод ни чуть не сложнее предыдущего и делает все то же самое, включает поддержку длинных путей свыше 256 символов для приложений Windows. Когда вы что-то меняете через редактор политик, по сути меняются настройки в реестре, это нужно помнить и знать. Сейчас я вам покажу какой ключ меняется. Откройте редактор реестра Windows. Перейдите в раздел:

тут вам необходимо найти параметр LongPathEnabled, которому для активации поддержки длинных путей и изменения ограничений в MAX_PATH, нужно задать значение «1». Тут потребуется перезагрузка.

long paths on windows 07

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

long paths on windows 09

Еще вы можете сделать такую поддержку и для конкретного пользователя по пути:

Если там нет ключа LongPathsEnabled, то создайте его, тип DWORD (32 бита) и значение 1.

Как в Windows 10 отключить ограничение на длину пути в 260 символов через PowerShell

Не все люди готовы копаться в редакторах и реестрах, им нужно быстрое решение, одним из таких является PowerShell. В оболочке выполните команду для активации параметра «Включить длинные пути Win32 (LongPathEnabled)». Не забываем перезагрузить систему.

long paths on windows 08

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

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

Как в Windows 10 отключить ограничение на длину пути в 260 символов через командную строку

Запустите командную строку в режиме администратора и введите:

long paths on windows 23

Обход ограничений длинных путей через 7zFM

Наверняка многие знают архиватор 7Zip, но мало кто пользуется его файловым менеджером 7zFM.exe, а зря именно он может вам помочь в ситуации с сообщением «Слишком длинный целевой путь» или «Слишком длинный конечный путь». Вот у меня есть тестовая директория, у которой уже есть 260 символов в пути, и я не могу там создавать новую папку.

long paths on windows 10

Откройте 7zFM.exe и перейдите в нем в конечную папку вашего пути.

Для создания новой папки нажмите клавишу F7.

long paths on windows 11

Задайте необходимое вам имя, в моем примере это будет «БОльше 260 Microsot«.

long paths on windows 12

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

long paths on windows 13

Проверяем, что директория доступна через проводник Windows.

long paths on windows 14

Все прекрасно отображается. Теперь я думаю вы легко сможете переносить, копировать, удалять файлы через 7zFM, когда вам проводник Windows ругается на наличие длинных путей.

long paths on windows 15

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

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

long paths on windows 16

Нам поможет команда mklink, где ключ /D создает ссылку на каталог

Источник

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

keyboard 469548 640.jpg.optimal

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

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

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

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

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

despaired 2261021 640.jpg.optimal

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

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

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

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

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

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

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

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

regedit long path enabled

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

regedit long path enabled change value

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

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

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

open group policy editor

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

group policy enable long filenames

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

group policy enable Win32 long paths enabled

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

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

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

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

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

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

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

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

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

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

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

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

file explorer destination path too long error

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

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

powershell cd documents

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

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

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

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

powershell copy item

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

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

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

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

powershell move item

powershell this in thatnewfolder

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

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

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

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

powershell remove item

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

Вот и все

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

Источник

Как найти имена файлов, чья длина превышает определённое значение

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

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

Один из вариантов исправить ситуацию — найти файлы с длинными именами и переименовать их или удалить.

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

Следующая команда ищет имена файлов в текущей директории, чья длина более 255 символов (в число 257 включены начальные ./):

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

Вы можете изменить размер имени для поиска:

Пример выполнения команды:

find long filenames

Сортировка файлов по длине имени файла

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

Пример работы программы:

long filenames

Ещё один вариант программы, которая делает это же самое, но для который не требуется PERL:

long filenames 2

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

Источник

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

783f45e7912346fba386a1707fcee1dd

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

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

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

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

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

.Net Framework

.Net Core

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

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

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

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

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

c443ebc1569b4eff8d7813c91d2a31e1

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

dad098a0aee447ef85ac8809f654597b

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

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

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

Источник

Обновлено 28.11.2020

Длинные пути Windows

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов Pyatilistnik.org. В прошлый раз мы с вами разобрали возможности утилиты PING, рассмотрели как ее применять на практике. В сегодняшней публикации я вам покажу, как устраняется боль и печаль в операционных системах Windows, я говорю про длинные пути, в своей практике я очень часто встречал жалобы «Слишком длинный целевой путь» или «Слишком длинный конечный путь«, то же самое вы можете встретить и при удалении. Ниже я покажу, как выкручиваться из данной ситуации.

Описание проблемы длинных путей

Раньше имена файлов в Windows ограничивались форматом 8.3 — всего восемь символов для имени файла и три для расширения. С появлением Windows 95 Microsoft сняла этот предел и позволила использовать гораздо более длинные имена.

Тем не менее, файловая система Windows по-прежнему накладывает некоторые ограничения, например, какие символы могут использоваться в именах файлов и общую длину путей. Некоторое время максимальная длина пути составляла 260 символов, но с появлением Windows 10, часть ограничений начала потихоньку уходить, например для приложений и появилась возможность отключить проверку MAX_PATH и использовать длинные пути без префикса \?.

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

\?C:директорияподдиректорияимя файла

Хочу отметить, что на период ноября 2020 года и последней версий Windows 10 1909, в ПРОВОДНИКЕ Windows до сих пор есть ограничения в 260 символов, и мы все слышим обещания, что их исправят

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

Слишком длинный целевой путь: Имена файлов слишком длинны для помещения в эту целевую папку. Попробуйте использовать более короткое имя имя файла или расположение с более коротким путем

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

Тоже самое при копировании в папку, так же выскакивает «Слишком длинный целевой путь».

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

Вот ошибка при извлечении архива в сетевую папку:

Не удается завершить извлечение. Слишком длинный конечный путь. Переименуйте сжатую ZIP-папку и повторите попытку

Не удается завершить извлечение. Слишком длинный конечный путь. Переименуйте сжатую ZIP-папку и повторите попытку

Методы снимающие ограничения на длину пути в Windows

  • Через групповую или локальную политику Windows (Применимо только к Windows 10 и Windows Server 2016 и выше)
  • Через реестр Windows (Применимо только к Windows 10 и Windows Server 2016 и выше)
  • Через сторонние утилиты 7-Zip, Far, TotalCommander (Применимо ко всем версиям Windows)
  • Использование силинков (символических ссылок) (Применимо ко всем версиям Windows)
  • Через сетевой диск, для укорачивания пути
  • Утилиты xcopy, robocopy

Нюансы длинных путей в приложениях

Есть один нюанс. Этот новый параметр (имеется ввиду та политика и ключ реестра) не обязательно будет работать со всеми существующими приложениями, но он будет работать с большинством. В частности, любые современные приложения должны работать нормально, как и все 64-битные приложения. Старые 32-разрядные приложения должны быть применимы для работы, что на самом деле просто означает, что разработчик указал в файле манифеста приложения, что приложение поддерживает более длинные пути. Большинство популярных 32-битных приложений не должно вызывать проблем. Тем не менее, вы ничем не рискуете, пробуя настройку. Если приложение не работает, единственное, что произойдет, это то, что оно не сможет открывать или сохранять файлы, сохраненные в местах, где полный путь превышает 260 символов.

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

<application xmlns=»urn:schemas-microsoft-com:asm.v3″>
<windowsSettings>
<longPathAware xmlns=»http://schemas.microsoft.com/SMI/2016/WindowsSettings»>true</longPathAware>
</windowsSettings>
</application>

Как в Windows 10 отключить ограничение на длину пути в 260 символов через политику

Чем примечателен данный метод, так это тем, что неподготовленных пользователей он не вынуждает выполнять команды или производить правку реестра, тут все в графическом виде. Так же если у вас есть домен Active Directory и вы хотите массово убрать ошибки «Слишком длинный целевой путь» или «Слишком длинный конечный путь» в приложениях и запретить им проверять MAX_PATH и использовать длинные пути без префикса \?, то групповые политики вам это помогут.

Еще раз напоминаю, что данный метод подойдет и для серверных версий, даже самых современных Windows Server 2019

Покажу для начала, как делать через локальную политику, открываете окно «Выполнить» в котором пишите gpedit.msc.

Хочу отметить, что для Windows 10 Home данный метод работать не будет, там просто нет редактора локальных политик, там придется лезть в реестр Windows

Как в Windows 10 отключить ограничение на длину пути в 260 символов

Далее идем по пути:

Конфигурация компьютера — Административные шаблоны — Система — Файловая система (Computer configuration — Administrative templates — System — Filesystem)

Найдите тут параметр «Включить длинные пути Win32 (Enable Win32 long paths)«, по умолчанию он отключен, и я честно не понимаю почему. Активируйте его.

Включить длинные пути Win32

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

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

Включение поддержки длинных путей через реестр

Данный метод ни чуть не сложнее предыдущего и делает все то же самое, включает поддержку длинных путей свыше 256 символов для приложений Windows. Когда вы что-то меняете через редактор политик, по сути меняются настройки в реестре, это нужно помнить и знать. Сейчас я вам покажу какой ключ меняется. Откройте редактор реестра Windows.  Перейдите в раздел:

HKLMSystemCurrentControlSetControlFileSystem

тут вам необходимо найти параметр LongPathEnabled, которому для активации поддержки длинных путей и изменения ограничений в MAX_PATH, нужно задать значение «1». Тут потребуется перезагрузка.

Включение поддержки длинных путей через реестр Windows. LongPathEnabled

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

Ключи реестра для активации MAX_PATH

Еще вы можете сделать такую поддержку и для конкретного пользователя по пути:

HKEY_CURRENT_USERSOFTWAREMicrosoftWindows CurrentVersionGroup Policy Objects {48981759-12F2-42A6-A048-028B3973495F} MachineSystemCurrentControlSetPolicies

Если там нет ключа LongPathsEnabled, то создайте его, тип DWORD (32 бита) и значение 1.

Как в Windows 10 отключить ограничение на длину пути в 260 символов через PowerShell

Не все люди готовы копаться в редакторах и реестрах, им нужно быстрое решение, одним из таких является PowerShell. В оболочке выполните команду для активации параметра «Включить длинные пути Win32 (LongPathEnabled)». Не забываем перезагрузить систему.

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

Как в Windows 10 отключить ограничение на длину пути в 260 символов через PowerShell

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

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

Как в Windows 10 отключить ограничение на длину пути в 260 символов через командную строку

Запустите командную строку в режиме администратора и введите:

reg add «HKLMSYSTEMCurrentControlSetControlFileSystem» /v LongPathsEnabled /t REG_DWORD /d 1

Потребуется перезагрузка.

Как в Windows 10 отключить ограничение на длину пути в 260 символов через командную строку

Обход ограничений длинных путей через 7zFM

Наверняка многие знают архиватор 7Zip, но мало кто пользуется его файловым менеджером 7zFM.exe, а зря именно он может вам помочь в ситуации с сообщением «Слишком длинный целевой путь» или «Слишком длинный конечный путь».  Вот у меня есть тестовая директория, у которой уже есть 260 символов в пути, и я не могу там создавать новую папку.

Исправляем Слишком длинный путь к источнику через 7zFM

Откройте 7zFM.exe и перейдите в нем в конечную папку вашего пути.

Для создания новой папки нажмите клавишу F7.

Создание папки в 7zFM.exe

Задайте необходимое вам имя, в моем примере это будет «БОльше 260 Microsot«.

Указание имени у создаваемой папки в 7zFM.exe

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

Успешно созданная папка через 7zFM.exe

Проверяем, что директория доступна через проводник Windows.

Обход ограничений длинных путей через 7zFM

Все прекрасно отображается. Теперь я думаю вы легко сможете переносить, копировать, удалять файлы через 7zFM, когда вам проводник Windows ругается на наличие длинных путей.

Обход ограничений длинных путей через 7zFM

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

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

  • Путь где будет лежать файл символической ссылки — в моем примере C:короткий путь
  • Длинный путь — C:ShareWINDOW~1C73D~1C6BF~1 D915~15C04~1B4E5~1260MIC~1

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

Нам поможет команда mklink, где ключ /D создает ссылку на каталог

mklink /D «C:короткий путь» «C:ShareWINDOW~1 C73D~1C6BF~1D915~15C04~1B4E5~1260MIC~1»

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

Создание символической ссылки для решения проблемы длинных путей

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

Как в Windows 10 отключить ограничение на длину пути в 260 символов через PowerShell

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

subst — простая команда позволяющая связать нужный путь к каталогу с буквой диска. Так же откройте командную строку в режиме администратора и сопоставьте ваш длинный путь с буквой W.

subst W: «C:ShareWINDOW~1C73D~1C6BF~1 D915~15C04~1B4E5~1260MIC~1»

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

У вас в проводнике Windows должен появиться диск с данной буквой, если его нет, то прочитайте статью «Не появляется диск после команды subst» или просто в проводнике вбейте W: и нажмите Enter.

Как устранить проблему длинных путей Windows

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

В командной строке используйте команду net use, далее буква диска, которую мы присваиваем и в самом конце путь:

net use Z: «\DESKTOP-OJ0SCOEShareWINDOW~1 C73D~1C6BF~1D915~15C04~1B4E5~1260MIC~1» /persistent:yes

Создание сетевого диска ведущего на длинный путь Windows

Как видим все прекрасно отработало и диск появился.

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

Использование утилит Far или Total Commander

После включения параметра «Включить длинные пути Win32» данные утилиты в 100% случаев помог вам произвести любые действия с папками или файлами на любом длинном пути в системе Windows. Откройте Total Commander и создайте для примера папку в каталоге с длинным путем, напоминаю для этого нужно нажать F7.

Использование утилит Far или Total Commander

Как видите все прекрасно создается, удаляется или копируется при желании.

Успешно созданная папка в Total Commander

Как еще обойти проблему с длинными путями Windows

В мир виртуализации и облаков, многие компании переносят свои файловые ресурсы именно туда. Например в моей компании используют для хранения большинства данных это Google Drive, кто-то диски mail.ru или Яндекса, не нужно этого бояться, главное смотрите, чтобы это подходило с юридической точки зрения но и не нужно лукавить это может стоить дополнительных расходов, но зато ни каких длинных путей, вышедших из строя дисков в RAID, место наращивается на лету, короче одни плюсы.

На этом у меня все, мы разобрали как исправляются ошибки «Слишком длинный целевой путь» или «Слишком длинный конечный путь«, с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

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

  • Почему возникает ошибка «файловая система не поддерживает такие длинные имена»
  • Как решить проблему
    • Переименование
    • Выключение ограничения
    • Unlocker
    • Total Commander
    • Архиватор 7-Zip
    • Сокращение пути через ссылку
  • Подводим итоги

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

Во всех версиях ОС Windows у каждого файла есть свое имя. Но обычно все данные не хранятся в одном месте, а распределяются (систематизируются) по папкам, чтобы их легче было найти. Внутри одной папки, например «Изображения», мы создаем подпапки «Природа», «Семья», «Работа» и так далее. В разделе «Семья» могут быть дополнительные папки «Отдых на море 2023», «Свадьба», «Шашлыки на даче» и прочее.

Когда происходит обращение к файлу (для удаления, воспроизведения или копирования), файловая система воспринимает весь путь к нему (названия всех папок), как одно имя. Это можно увидеть в строке Проводника.

Названия складываются вместе с названием конечного файла. В операционной системе Windows 7, 8, 10 установлено ограничение на общую длину такого имени файла в 255 символов. Это сделано для легкого взаимодействия с другими ОС, если понадобится объединить их в общую сеть.

В Windows XP такого ограничения нет. XP имеет файловую систему FAT32, у которой есть ограничение на размер файла 4 ГБ. Большой фильм в формате 8К на такой ОС уже не сохранить. Последующие версии Windows имеют систему NTFS, позволяющую загружать файлы любого размера.

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

Ошибка «файловая система не поддерживает такие длинные имена»

Более подробно прочитать обо всех ограничениях относительно имен в ОС Windows можно здесь.

Как решить проблему

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

Переименование

Помня об ограничении длины в 255 символов, нужно сократить названия некоторых папок, через которые пролегает путь к файлу. Самый простой вариант – задать им числовые имена вместо слов. Например: «1», «2», «3».

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

Попробуйте сократить названия, используя несколько букв, а не целые слова. Например: вместо «фотографии» – «фото», вместо «оборудование» – «оборуд». Задайте и конечному файлу более короткое имя. После этого повторите попытку открытия или удаления.

Выключение ограничения

Ограничение в 255 символов можно просто отключить в реестре ОС, если не планируется взаимодействие в другими компьютерами по общей сети. Для этого проделайте следующее:

  1. Введите команду WIN+R.
  2. В открывшейся строке напишите regedit и нажмите Enter.
  3. Запустится окно с реестром. Выберите папку HKEY_LOCAL_MACHINE.
  4. В ней пройдите по пути, указанному на фото до файла Long Paths Enable.
  5. Задайте ему значение «1».

Выключение ограничения на длину имени файла

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

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

Unlocker

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

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

Total Commander

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

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

Архиватор 7-Zip

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

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

Создавая новые папки с 20–30 ступенчатой структурной иерархией и помещая туда содержимое, можно надежно спрятать важные документы, поскольку при помощи обычного Проводника Windows их не открыть.

Сокращение пути через ссылку

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

Для этого:

  1. В поле поиска на панели задач введите «Командная строка».
  2. В черном окне введите mklink /D «C:короткий путь».
  3. Далее скопируйте полный путь из свойств папки и вставьте его сюда же.

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

Подводим итоги

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

А теперь можете закрепить информацию, посмотрев ролик о том, как исправить ошибку слишком длинного пути к файлу:

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

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

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

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

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

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

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

Ошибка Слишком длинное имя файла в Windows

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

  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_MACHINESYSTEMCurrentControlSetControlFileSystem
  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.

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

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

Dropbox tells me many of my files are not syncing because their name exceeds the max character length

https://www.dropbox.com/help/145/en

Max character length

Windows only allows file and folder names of 260 characters or less.
Note that Windows counts the file path as part of the name, so a file
like C:UsersPandaMy DocumentsDropboxCreative NonfictionMy
AutobiographyFavorite ThingsFavorite FoodsBambooFamily
RecipesFresh Leaves.doc would be 142 characters, not 16. If the
entire file path and name exceed 260 characters, shorten the name or
move the file or folder to a higher-level folder within your Dropbox.

How do I find all the files under a directory whose file and folder names are greater than 250 characters?

(Note: the «Check bad files» tool on that page doesn’t find them either.)

Update: there are two suggestions so far, one using powershell that ironically, died when a filename grew too large, the other using cygwin’s find and xargs, which may work, but is still running (several minutes later.)

I did solve my immediate problem.

In an emacs shell window, I ran a very simple find

$ find . -type f -print >> ../files.log

Then I opened that in emacs and typed
m-x list-matching-lines ^ ESC 230 . RETURN

Which displays lines that match a regular expression, and the regular expression here is that the line contain at least 230 characters, where 230 was just a rough guess for lines that might be problematical. And that showed me two files that were too long.

For about 20,000 files that regular expression filter turned out to be almost instantaneous.

Dropbox tells me many of my files are not syncing because their name exceeds the max character length

https://www.dropbox.com/help/145/en

Max character length

Windows only allows file and folder names of 260 characters or less.
Note that Windows counts the file path as part of the name, so a file
like C:UsersPandaMy DocumentsDropboxCreative NonfictionMy
AutobiographyFavorite ThingsFavorite FoodsBambooFamily
RecipesFresh Leaves.doc would be 142 characters, not 16. If the
entire file path and name exceed 260 characters, shorten the name or
move the file or folder to a higher-level folder within your Dropbox.

How do I find all the files under a directory whose file and folder names are greater than 250 characters?

(Note: the «Check bad files» tool on that page doesn’t find them either.)

Update: there are two suggestions so far, one using powershell that ironically, died when a filename grew too large, the other using cygwin’s find and xargs, which may work, but is still running (several minutes later.)

I did solve my immediate problem.

In an emacs shell window, I ran a very simple find

$ find . -type f -print >> ../files.log

Then I opened that in emacs and typed
m-x list-matching-lines ^ ESC 230 . RETURN

Which displays lines that match a regular expression, and the regular expression here is that the line contain at least 230 characters, where 230 was just a rough guess for lines that might be problematical. And that showed me two files that were too long.

For about 20,000 files that regular expression filter turned out to be almost instantaneous.

йкус

0 / 0 / 0

Регистрация: 28.09.2016

Сообщений: 7

1

Поиск длинных имен файлов и папок

28.09.2016, 12:45. Показов 15285. Ответов 16

Метки нет (Все метки)


Есть проблемы при использование длинных имен файлов или папок в разном ПО, но пользователи в общей сетевой папке игнорируют просьбы на создание длинных имен и пишут целые повести в названии папок или имен файлов. В полуавтоматическом режиме я конечно это все нахожу используя стороне программное обеспечение, но хотелось бы автоматизировать процесс.
Был взят соответствующий код но он не работает,интуиция подсказывает что проблема в этой строке Set iStr=!iStr:~%MaxLen%!

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
Set tDir=P:Объекты
Set MaxLen=256
Set OutFile1=c:longout1.txt
SetLocal EnableDelayedExpansion 
 
For /F "Tokens=* UseBackQ" %%i In (`Dir "%tDir%*.*" /A-D /B /O:N /S`) Do ( 
    Set iStr=%%i 
    Set iStr=!iStr:~%MaxLen%! 
    If NOT [!iStr!]==[] ( 
        Echo  "%%i">>%OutFile1%  
    )
)

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

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



YuS_2

Любознательный

3223 / 863 / 231

Регистрация: 10.03.2016

Сообщений: 2,039

28.09.2016, 13:24

2

Цитата
Сообщение от йкус
Посмотреть сообщение

прошу подсказать решение проблемы

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

Цитата
Сообщение от йкус
Посмотреть сообщение

If NOT [!iStr!]==[] (

надо так:

Windows Batch file
1
2
if defined iStr (
...

Но выводить лучше таки отрезанное значение, т.е. «echo !iStr!», а иначе бессмыслица какая-то получается. Правда отрезается у Вас всё,в том числе и расширение файла…
Вы лучше опишите, что хочется получить в итоге, тогда и подсказка будет точнее…



0



4330 / 2120 / 661

Регистрация: 26.04.2015

Сообщений: 6,823

28.09.2016, 13:31

3

Цитата
Сообщение от йкус
Посмотреть сообщение

Set iStr=!iStr:~%MaxLen%!

обрезает 256 символов вначале строки, может у вас строки короче и обрезается все? Попробуйте вместо 256 — 1.

Добавлено через 59 секунд
Хотя реально глупо как-то составлен код.



0



0 / 0 / 0

Регистрация: 28.09.2016

Сообщений: 7

28.09.2016, 13:34

 [ТС]

4

есть сетевая шара в ней есть длинные пути ( путь вложенных папок + имя файла> 256 символом) хотел собрать такие папки и файлы в лог фаил. В текущей реализации в лог попадаю все файлы.



0



YuS_2

Любознательный

3223 / 863 / 231

Регистрация: 10.03.2016

Сообщений: 2,039

28.09.2016, 19:12

5

Цитата
Сообщение от йкус
Посмотреть сообщение

хотел собрать такие папки и файлы в лог фаил.

Вам надо посчитать длину строки (строка у Вас присвоена в значение переменной), вот здесь можно посмотреть, как это сделать (там есть разные варианты, но лично я бы предпочел с использованием powershell) и потом уже сравнивать с требуемым числом в условном блоке (операторы сравнения смотреть в: «if /?») и в зависимости от результата выводить то, что требуется в лог.

Добавлено через 4 минуты
Если ничего не выйдет — отпишите, что-нибудь придумаем.

Добавлено через 4 часа 43 минуты
Вот, такой вариант:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
echo BEGIN_TimeStamp=%time%
set "src=P:Объекты"
set /a maxL=29
set "log=c:longout1.txt"
if exist "%log%" del "%log%"
for /f "delims=" %%k in ('dir /b/s/a "%src%"') do set "str=%%k"&call :strlen
echo END_TimeStamp=%time%
pause&exit /b
 
:strlen
set /a s=0
if defined str (
    setlocal enabledelayedexpansion
    for %%i in (4096 2048 1024 512 256 128 64 32 16) do if "!str:~%%i,1!" neq "" set "str=!str:~%%i!"&set /a s+=%%i
    set "str=!str!0FEDCBA9876543211"&set /a s+=0x!str:~32,1!!str:~16,1!
)
endlocal&set /a "dln=%s%"
if "%dln%" gtr "%maxL%" echo %str%>>"%log%"
exit /b

работает относительно быстро…



0



0 / 0 / 0

Регистрация: 28.09.2016

Сообщений: 7

29.09.2016, 07:19

 [ТС]

6

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



0



йкус

0 / 0 / 0

Регистрация: 28.09.2016

Сообщений: 7

30.09.2016, 09:27

 [ТС]

7

Вариант скрипта

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
echo BEGIN_TimeStamp=%time%
set "src=P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ"
set /a maxL=249
set "log=c:longout3.txt"
if exist "%log%" del "%log%"
for /f "delims=" %%k in ('dir /b/s/a "%src%"') do set "str=%%k"&call :strlen
echo END_TimeStamp=%time%
pause&exit /b
 
:strlen
set /a s=0
if defined str (
    setlocal enabledelayedexpansion
    for %%i in (4096 2048 1024 512 256 128 64 32 16) do if "!str:~%%i,1!" neq "" set "str=!str:~%%i!"&set /a s+=%%i
    set "str=!str!0FEDCBA9876543211"&set /a s+=0x!str:~32,1!!str:~16,1!
)
endlocal&set /a "dln=%s%"
if "%dln%" gtr "%maxL%" echo %str%>>"%log%"
exit /b

почему то есть ложные срабатывания вот результат лога

Код

P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-114-6-ПИР ТП 1993
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-14-054-10-ПИР Звезда
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-06-13-113-6-ПИР В.Дуброво
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-085-04-ПИР Прибрежный
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-06-15-006-04-ПИР ТП-6419
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-089-6-ПИР ТП 3108
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-070-04-ПИР Пушкина-6-16-А
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-14-044-6-04 ПИР СНТ ОблФО
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-084-10-ПИР ТП-1438
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-093-10-ПИР Искра
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-115-10-ПИР РП 867
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-088-6-ПИР Западная
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-06-14-039-04-ПИР Бобровский
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-06-14-013-10-ПИР Первомайский
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-074-6-ПИР Широкий-2-А
P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-14-049-04 ПИР Полеводство

обратив внимание что скрипт не любит дополнительных точек в названии файла

Добавлено через 48 минут

Цитата
Сообщение от YuS_2
Посмотреть сообщение

Но проблема, скорее не в отрезании, а вот здесь:
Сообщение от йкус
If NOT [!iStr!]==[] (

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

Цитата
Сообщение от YuS_2
Посмотреть сообщение

Но выводить лучше таки отрезанное значение, т.е. «echo !iStr!», а иначе бессмыслица какая-то получается. Правда отрезается у Вас всё,в том числе и расширение файла…

Нужно выводить «!iStr!» — путь, отрезанное значение получается то что больше заданной длинны и не несет информации о пути.

Цитата
Сообщение от YuS_2
Посмотреть сообщение

надо так:
Windows Batch fileВыделить код
1
2
if defined iStr (

так?

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Set tDir=P:Объекты
Set MaxLen=240
Set OutFile1=c:longoutl21.txt
Set OutFile2=c:longoutl22.txt
echo BEGIN_TimeStamp=%time%
SetLocal EnableDelayedExpansion 
 
For /F "Tokens=* UseBackQ" %%i In (`Dir "%tDir%*.*" /A-D /B /O:N /S`) Do ( 
    Set iStr=%%i 
    Set iStr=!iStr:~%MaxLen%! 
    If defined !iStr! ( 
        Echo "!iStr!", "%%i" >>%OutFile1%  
    ) else Echo "!iStr!", "%%i" >>%OutFile2%  
)
echo END_TimeStamp=%time%

условие определение нулевого отрезка не срабатывает.((



0



Любознательный

3223 / 863 / 231

Регистрация: 10.03.2016

Сообщений: 2,039

30.09.2016, 09:55

8

Цитата
Сообщение от йкус
Посмотреть сообщение

почему то есть ложные срабатывания

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



0



0 / 0 / 0

Регистрация: 28.09.2016

Сообщений: 7

30.09.2016, 11:14

 [ТС]

9

P:ОбъектыОбъекты В РаботеОбъекты В Работе — 01 ЛОТЫ1-60-01-15-114-6-ПИР ТП 1993
полная структура каталога в архиве



0



YuS_2

Любознательный

3223 / 863 / 231

Регистрация: 10.03.2016

Сообщений: 2,039

30.09.2016, 12:24

10

Цитата
Сообщение от йкус
Посмотреть сообщение

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

А, ну да… Вам ведь в лог нужен полный путь. Тогда из Вашего кода, для вывода лога, оставьте только это:

Windows Batch file
1
    If defined iStr Echo "%%i" >>"%OutFile1%"

и именно так, как у меня написано…
т.е. получиться вывод в лог, если переменная iStr непустая. А непустая она может быть, при таком коде, только если в строке символов больше чем %MaxLen%…

Добавлено через 48 минут
йкус,
Так, понятно, в моем скрипте ошибка была. Сравниваем числа, а не текст, поэтому необходимо заменить вот эту строку:

Windows Batch file
1
if "%dln%" gtr "%maxL%" echo %str%>>"%log%"

на вот такую:

Windows Batch file
1
if %dln% gtr %maxL% echo %str%>>"%log%"



0



volodin661

5614 / 1690 / 292

Регистрация: 10.12.2013

Сообщений: 5,954

30.09.2016, 12:29

11

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

Существует много способов ‘укоротить’ имена,
можно, например, получить из полного пути файла MD5-сумму,
сделать из этой суммы файл, являющийся символической ссылкой и отдать убогой программе, то есть из
этих развесистых путей:

Кликните здесь для просмотра всего текста

1C
1
2
3
4
5
6
7
8
9
10
"P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-114-6-ПИР ТП 19931-60-01-15-114-6-ПИР-Сметы15-114.rar"   
"P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-114-6-ПИР ТП 19931-60-01-15-114-6-ПИР-СогласованияМЭСК-ЛОТЫ 2016-06-28-218-90 Согласование Труд.pdf"   
"P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-114-6-ПИР ТП 19931-60-01-15-114-6-ПИР-СогласованияРостелеком-ЛОТЫ 2016-09-02-312 Согл. ПС Труд.pdf"   
"P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-114-6-ПИР ТП 19931-60-01-15-114-6-ПИР-Выезд1-60-01-15-114-6-ПИР-ДВ.xlsx"   
"P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-114-6-ПИР ТП 19931-60-01-15-114-6-ПИР-ВыездВыезд от 11.02.16P2110007.JPG"   
"P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-114-6-ПИР ТП 19931-60-01-15-114-6-ПИР-ВыездВыезд от 11.02.16P2110008.JPG"   
"P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-114-6-ПИР ТП 19931-60-01-15-114-6-ПИР-ВыездВыезд от 11.02.16P2110009.JPG"   
"P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-114-6-ПИР ТП 19931-60-01-15-114-6-ПИР-ВыездВыезд от 11.02.16P2110010.JPG"   
"P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-114-6-ПИР ТП 19931-60-01-15-114-6-ПИР-ВыездВыезд от 11.02.16P2110011.JPG"   
"P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-114-6-ПИР ТП 19931-60-01-15-114-6-ПИР-ВыездВыезд от 11.02.16P2110012.JPG"

получатся вот такие изящные файлики-ссылки одной длины:

Кликните здесь для просмотра всего текста

1C
1
2
3
4
5
6
7
8
9
10
515df5bb4e22dd1ed7ec027bbc8b43d1
57c7a7cfd2cb9ffc19e5c21d1cd101ff
0607d29105e31958796b4d5013ec866d
ea4e915b8ad9acbb12763c6567ce9c48
e7107e86890e515658a4e54421c0e0f3
065e9e5fe960c55fd5f45b45e983b688
40b3cd4b9728aa73c5598eb0553e0bc3
a83b80bc8fb46a68ae220c7871f34283
cd0f625023538960772e9f44c2a2775b
50a5bf258ca75543a9d2ffd7c041c637



0



0 / 0 / 0

Регистрация: 28.09.2016

Сообщений: 7

30.09.2016, 13:12

 [ТС]

12

Цитата
Сообщение от volodin661
Посмотреть сообщение

Существует много способов ‘укоротить’ имена,
можно, например, получить из полного пути файла MD5-сумму,
сделать из этой суммы файл, являющийся символической ссылкой и отдать убогой программе, то есть из
этих развесистых путей:

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

Добавлено через 2 минуты
YuS_2
скрипт падает при наличии дополнительной точки в имени файла.

Код

BEGIN_TimeStamp=14:34:18,97
Непредвиденное появление: >.



0



5614 / 1690 / 292

Регистрация: 10.12.2013

Сообщений: 5,954

30.09.2016, 13:56

13

Цитата
Сообщение от йкус
Посмотреть сообщение

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

если читать внимательно:

Цитата
Сообщение от volodin661
Посмотреть сообщение

сделать из этой суммы файл, являющийся символической ссылкой

для ссылки безразлично перемещение файла, на который она ссылается, перемещения файла отслеживаются NTFS,
на то она и ссылка.



0



0 / 0 / 0

Регистрация: 28.09.2016

Сообщений: 7

30.09.2016, 14:02

 [ТС]

14

Цитата
Сообщение от volodin661
Посмотреть сообщение

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

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



0



Любознательный

3223 / 863 / 231

Регистрация: 10.03.2016

Сообщений: 2,039

30.09.2016, 14:08

15

Цитата
Сообщение от йкус
Посмотреть сообщение

скрипт падает при наличии дополнительной точки в имени файла.

А где?

Цитата
Сообщение от YuS_2
Посмотреть сообщение

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



0



volodin661

5614 / 1690 / 292

Регистрация: 10.12.2013

Сообщений: 5,954

30.09.2016, 14:19

16

Цитата
Сообщение от йкус
Посмотреть сообщение

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

hardlink нужен

Windows Batch file
1
mklink /H 515df5bb4e22dd1ed7ec027bbc8b43d1 "P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ1-60-01-15-114-6-ПИР ТП 19931-60-01-15-114-6-ПИР-Сметы15-114.rar"



0



Dragokas

Эксперт WindowsАвтор FAQ

17954 / 7591 / 889

Регистрация: 25.12.2011

Сообщений: 11,323

Записей в блоге: 17

06.10.2016, 00:55

17

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
SetLocal EnableExtensions
 
set "src=P:ОбъектыОбъекты В РаботеОбъекты В Работе - 01 ЛОТЫ"
set "log=c:longout3.txt"
 
>"%log%" (for /f "delims=" %%k in ('dir /b /s /a "%src%*"') do set "str=%%k" & call :isExceed && echo %%k)
 
pause & goto :eof
 
:IsExceed
if "%str:~256,1%"=="" (exit /b 1) else (exit /b 0)



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

06.10.2016, 00:55

17

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

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

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

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

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

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

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

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

C:UserguymcDocumentsMy Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx

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

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

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

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

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

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

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

C:UsersguymcDocumentsThisIsExactlyThePreciseDirectoryPathThatINeedToHaveToKeepMyFilesSortedInAMannerThatMakesSenseToMeSoLetsPretendThisIsAnActualFilepathThatYouMightAlsoHaveOnYourWindowsComputerAndNotOverThinkItDocument.docx

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

Copy-Item This -Destination ThatNewFolder -Recurse

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

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

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

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

Move-Item -Path This -Destination ThatNewFolder

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

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

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

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

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

Remove-Item This -Recurse -Force

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

Вот и все

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

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

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

Для этого мы предлагаем использовать простую утилиту Long Path Checker. Подобными возможностями обладает и PowerShell, но Long Path Checker предоставляет данные в более удобочитаемом виде.

Запустив утилиту, в поле «Starting Directory» указываем каталог или раздел, который будет служить точкой отсчёта и жмем «Get Path Lengths».

Long Path Checker

Менее чем через минуту программа выведет список всех имеющихся в системе путей от мала до велика, так что вам только останется отсортировать их по длине нажатием заголовка столбца «Length». Как видите, самый длинный путь, обнаруженный в нашей Windows, имеет 288 символов, а самый короткий — всего 6 символов. Полученные данные можно скопировать в буфера обмена, направленная вниз стрелка рядом с кнопкой копирования открывает меню сохранения данных в файл CSV. Если нажать по любому элементу ПКМ, появится меню перехода в содержащую папку файл, но эта опция не срабатывает, если длина пути превышает 260 символов.

Length

Обидно, что Long Path Checker не предлагает никаких практических решений для удаления объектов с длинными путями. Она просто констатирует факт, что такие пути в системе присутствуют.

Для удаления файлов со «сверхдлинными» путями можно использовать утилиту Long Path Fixer, но она не слишком удобна в обращении, так как путь к объекту приходится указывать, переходя по иерархической цепочке древа каталогов вручную.

Long Path Fixer

Long Path Fixer

Как открыть доступ к папке с длинным путем

Альтернативный вариант — создать на содержащий файл каталог с длинным путем симоволическую ссылку в командной строке командой:

mklink /d «D:link» «C:оченьдлинныйпутькпапке»

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

Mklink

Удалить

Утилита для выявления длинных путей: github.com/deadlydog/PathLengthChecker

Утилита для удаления файлов с длинными путями: corz.org/windows/software/accessories/Long-Path-Fixer-for-Windows.php

Загрузка…

Like this post? Please share to your friends:
  • Поиск всех фото на компьютере windows 10
  • Поиск всех картинок на компьютере windows 10
  • Поиск всех изображений в windows 10
  • Поиск всех видео на компьютере windows 10
  • Поиск временных файлов в windows 7