Содержание
- 1 Как копировать папки с файлами на виндовс с 7 с более 260 знаками?
- 2 Длинные имена файлов
- 3 Нюансы длинных путей в приложениях
- 4 Суть проблемы
- 5 Как обойти ограничение на длину пути при создании или копировании файла
- 6 Как удалять, копировать, переносить файлы и папки при ошибке с длинными путями
- 7 Продукты Vault
- 8 Как включить режим просмотра расширений имени файла в Windows XP
- 9 Как обойти ограничение длинных путей через символьную ссылку
- 10 Решение
- 11 Как обойти ограничение на создание файла с длинным путем
- 12 Справочник по групповому переименовыванию файлов через totalcommander
- 13 Как временно исправить проблему с файлами?
- 14 Что делать, если слишком длинный путь к источнику, как удалить такой файл?
- 15 Варианты решения
Как копировать папки с файлами на виндовс с 7 с более 260 знаками?
Имеется большое количество папок с очень длинными названиями, которые нужно скопировать на диск/флешку. При попытке копирования файла или папки всплывает окошко с надписью «Не удается скопировать файл /папку. Слишком длинное имя / целевой путь конечного файла». Тотал коммандер не помогает. знаю что в виндовс 10 этот вопрос решен, но речь идет о семерке
Единственный вариант в данном случае – сократить длину названий, можно при помощи того же Тотал Командера при помощи групповым переименованием, но будьте внимательны.
Как найти скрытые папки на Windows 7?
Для того чтобы отображались скрытые папки надо выполнить несколько простых действий:
1. открыть любую папку;
2. во вкладке “Упорядочить” выбрать пункт “Параметры папок и поиска”;
3. в появившемся окне перейти на вкладку “Вид” и в разделе “Дополнительные параметры”, в самом низу списка выбрать “Показывать скрытые файлы, папки и диски”;
4. сохранить изменения, нажав “Ок”.
После этого все скрытые папки отобразятся, их значок будет отличаться от обычного небольшой прозрачностью.
7 3 · Хороший ответ
Как объединить несколько файлов jpg в один файл pdf?
Объединить несколько jpg-файлов в один pdf-файл можно одним из следующих способов:
- Воспользоваться бесплатными онлайн-конвекторами, например, “pdf_io” или “pdf-doc”;
- Воспользоваться программой “PhotoShop”, где после объединения файлов следует сохранить все в один итоговый pdf-файл.
3 4 · Хороший ответ
“Файл слишком велик для конечной файловой системы” — откуда такая ошибка?
Если вы имеете в виду ошибку, которая возникает у вас при попытке записать файл на флешку, на которой куча места, а она вам этого сделать не дает, отображаю эту ошибку, то необходимо флешку отформатировать. Имейте в виду, что при форматировании флеш накопителя вам нужно сохранить все данные, которые на нем храняться. Так как форматирование приводит к удалению всех данных. Причина ошибки следующая: почти все флешки используют файловую систему FAT32, а эта система не поддерживает файлы которые весят больше 4 гигабайт. Поэтому решить проблему можно, отформатировать флешку в другую файловую систему (NFTS). Откройте “Мой компьютер”, выберите флешку (которую вы уже вставили в разъем и она загрузилась), правой кнопки мыши кликните по значку флешки, в открывшемся меню выберите пункт “Форматировать”, в открывшемся окне вы увидите, что по умолчанию стоит файловая система “FAT32”, нажмите на меню файловой системы и выберите систему NFTS. Далее нажмите “Начать”, подтвердите удаление всех файлов. Флешка отформатируется, и подобной ошибки вы больше не увидите.
Длинные имена файлов
Всем привет переношу файлопомойку с винды на линукс. Столкнулся с проблемой «очень длинных имён файлов». Похоже, счёт идет не на символы, а на байты (гугление это подтверждает)
Внимание, вопрос: мне таки придётся использовать винду или есть какое-то решение этой проблемы? (усекновение имени – не решение в данной ситуации)
ext2/3/4,reiser,xfs,jfs – все поддерживают 255 символов в имени файла (или 127 в UTF8) – куда вам больше??
Поправочка: 127 русских букв, закодированных в UTF8.
UTF8 – однобайтовая кодировка, так что ASCII в UTF8 = ASCII
ФС те, которые поддерживаются CentOS 5.4 – то есть ext2/3, ext4 без mkfs.ext4, xfs на положении ext4.
127 букв – внезапно оказалось мало. Есть у пользователей такие имена файлов:
«Котов АН Моделирование дорожного движения на многополосной магистрали при помощи двумерного вероятностного клеточного автомата с тремя состояниями, 2008 (диссертация)»
Усекновение – не вариант. На винде такое имя файла обрабатвается корректно
$ echo «Котов АН Моделирование дорожного движения на многополосной магистрали при помощи двумерного вероятностного клеточного автомата с тремя состояниями, 2008 (диссертация)» | wc -c
$ touch «Котов АН Моделирование дорожного движения на многополосной магистрали при помощи двумерного вероятностного клеточного автомата с тремя состояниями, 2008 (диссертация)»
$ ls Котов* Котов АН Моделирование дорожного движения на многополосной магистрали при помощи двумерного вероятностного клеточного автомата с тремя состояниями, 2008 (диссертация)
Вроде создался файл. ext3.
Если очень нужно, то можно поставить однобайтную локаль. Хотя да, не решение.
Нюансы длинных путей в приложениях
Есть один нюанс. Этот новый параметр (имеется ввиду та политика и ключ реестра) не обязательно будет работать со всеми существующими приложениями, но он будет работать с большинством. В частности, любые современные приложения должны работать нормально, как и все 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 начинает превышать примерно 260 знаков и с папками или файлами, находящимися “глубже” этого ограничения поделать уже ничего нельзя без дополнительных танцев с бубнами. Будем полагать, что штатный проводник Windows (и многие другие программы) с такими большими путями работать не могут. Но есть ряд программ, которые могут и этим самым доставляют немало хлопот потом. Возможно вы видели нечто подобное:
Такое бывает при работе программ восстановления данных (та же R-Studio переваривает длинные пути, даёт сохранить на компьютер), или при сохранении веб-страниц, распаковке архивов и т.д. Причём удалить такие папки тоже может быть проблематично.
Как обойти ограничение на длину пути при создании или копировании файла
У читателя Александра подопечный юзер спросонья удалил важный файл из сетевой папки. Админ, заранее подстеливший соломку, успокоил беднягу и уверенно открыл вчерашние теневые копии. Файл там был, но в нагрузку с ним шли грабли.
Слишком длинный целевой путь или имя файла
Цитирую письмо:
При попытке восстановить я получил ошибку о том, что путь до файла слишком длинен, и ничего с ним сделать нельзя. Т.к. это копия vss переименовать\скопировать\переместить я его не смог. Бился целый день, но выхода так и не нашел.
И неудивительно, с таким-то путем!
\\localhost\D$\sales\0-Коммерческий отдел (общий ресурс-обмен)\Общий ресурс (тел., реестры,реквизиты)\КЛИЕНТЫ С 2014\Стратегия\Договор аренды с выкупом_Клиент_27.06.14\Вар дог._25% аванс_с выкупом_17.07.14 (Today, July 22, 2014, 3 hours ago)\3 вар_договор аренды с правом выкупа_6443-001 от 17.07.14.pdf
Графический интерфейс теневых копий выпилили только из Windows 8, а на серверной ОС он сохранился, и свойства папки выглядят аналогично Windows 7.
Снимок экрана любезно предоставил Вадимс Поданс
Как обойти ограничение на создание файла с длинным путем
Понятно, что восстановление при таком длинном пути не сработает – ведь нужно скопировать файл в исходное расположение. Но я сходу не понял, почему возникли затруднения с копированием файла в любое другое место – главное же было вернуть файл пользователю. Проводник же может скопировать файл из длинного пути.
Так или иначе, я получил письмо в метро, и поэтому с телефона по-быстрому отправил ответ, который должен был обойти препятствие. Я предложил создать символическую ссылку на часть пути:
mklink /d c:\link «\\localhost\D$\sales\0-Коммерческий отдел (общий ресурс-обмен)\Общий ресурс (тел., реестры,реквизиты)\»
Теперь копирование файла в C:\link должно было вернуть его на прежнее место. И это сработало
Такое решение пришло мне в голову не случайно – ведь вопрос был о теневых копиях, а я уже пару раз рассказывал, как войти в них с помощью символической ссылки. Позже, когда я готовил эту заметку и рылся в своей записной книжке, всплыло и другое решение, которым я делился три года назад.
subst V: «\\localhost\D$\sales\0-Коммерческий отдел (общий ресурс-обмен)\Общий ресурс (тел., реестры,реквизиты)\»
Команда subst сопоставляет папку букве диска, и при желании одной командой можно моментально занять все буквы! В принципе, если путь супер-длинный, это может пригодиться, т.к. придется создавать серию сопоставлений.
Эксперимент
Хотите проверить, как все выглядит на практике? Я подготовил для вас CMD-файл (скачать), этапы работы которого вы можете наблюдать в проводнике. Запускайте файл от имени администратора, иначе символическая ссылка не получится. Я проверял работу файла только в Windows 8.1, но он должен работать и в предыдущих ОС.
Код командного файла для экспериментов
Поскольку пояснения кириллические, файл нужно сохранять в кодировке MS-DOS (подсказка – у вас всегда есть WordPad
Прежде чем удалять все файлы на последнем шаге, вы можете поиграть с созданными файлами и папками в файловом менеджере. Вы увидите разные сообщения. Например, при попытке копирования файла в папку:
При создании нового текстового документа (стандартное имя длинное):
Разные консольные команды тоже на свой лад сообщают об ограничении.
Дискуссия
Вообще, длина пути в 260 символов это анахронизм, хотя я не припоминаю, когда сталкивался с ограничением в последний раз. Однако я уже давно не раскладываю все по папочкам, и уж тем более с такими адскими именами.
Как удалять, копировать, переносить файлы и папки при ошибке с длинными путями
Разобравшись с тем, как отключить проверку MAX_PATH в приложениях, давайте теперь поймем и научимся решать проблему длинных путей на файловых шарах и просто в проводнике. Классическая ситуация, когда пользователь попытался перенести свой файл или удалить его, создать папку и так далее, и он получает ошибку с пресловутыми длинными путями. Он просит разобраться вас и тут начинаются танцы с бубнами, вы просите его либо переименовать часть пути, или попросить его произвести действия в другом расположении, или просто забить, сказав, что виновата Windows со своими ограничениями, но мы же с вами профессионалы и инженеры, поэтому должны уметь выходить из таких ситуаций.
Продукты Vault
Следующая ошибка может возникнуть в качестве всплывающего окна в клиенте Vault во время выполнения определенной команды или в поле «Результаты» в Job Processor Vault:
«Указанный путь, имя файла или оба слишком длинны. Полноценное имя файла должно быть менее 260 символов, а имя каталога должно быть менее 248 символов. »
Это может быть отображено после использования одной из следующих команд Vault:
- Копировать дизайн ,
- переименовывать ,
- Переехать файл / папка
- Обновить вид (локально или в очереди)
- Изменение статуса файла, который запускает задание на создание .dwf
Ограничение операционной системы является причиной такого поведения. Microsoft Windows ограничивает количество символов, которые можно использовать при объединении пути и имени файла.
Увидеть » Максимальное ограничение длины пути ».
При использовании одной из этих команд хранилища файлы копируются в % TEMP% папка на клиенте. Сочетание реального пути и виртуального пути хранилища (к % TEMP% папка), может превышать максимальный предел символов, установленный операционной системой.
Полный путь при выполнении одной из этих команд хранилища следующий:
%TEMP%\\\\См. также раздел
Запросы на усовершенствование в Vault Ideastation для поддержки режима расширения символов окна
Попробуйте следующие предложения, чтобы уменьшить имена файлов и папок:
- Уменьшите длину пути до папки TEMP.
- Повторно добавьте их в хранилище.
1. Уменьшите длину пути к папке TEMP
Если проблема не устраняется после следования советам Microsoft, самый простой способ устранить эту ошибку — уменьшить длину % TEMP% системная переменная.
В Windows по умолчанию % TEMP% переменной задано следующее:
C: \ Documents and Settings \ \ Local Settings \ Temp
Не включая раздел, путь по умолчанию имеет 46 символов.
Можно уменьшить длину этого пути, задав переменные TEMP «Система» и «Пользователь» для использования более короткого пути, такого как C: \ TEMP
Следуй этим шагам:
- В окне панели управления дважды щелкните пункт «Система».
- На вкладке «Дополнительно» выберите «Переменные среды».
- В разделе «Пользовательская переменная для » выберите TEMP, а затем отредактируйте ее для чтения C: \ TEMP ,
- Повторите эти шаги и для системной переменной TEMP.
Альтернативой является сокращение длины пути к папке и имени файла внутри Vault.
2. Повторно добавьте их в Хранилище.
Поскольку сокращение пути невозможно, когда файлы находятся в хранилище, выполните следующие действия:
- Получите последние версии файла,
- Удалите сводчатые файлы и любые длинные имена папок,
- В проводнике Windows уменьшите длину пути, уменьшив имена файлов и папок
- Откройте файлы в авторской программе, разрешив y ссылки на файлы.
- Добавьте их в хранилище из авторской программы.
Как включить режим просмотра расширений имени файла в Windows XP
Такой режим не всегда удобен. Но есть и плюсы – Вы случайно не смените расширения файлов.
Чтобы включить режим просмотра расширений имени файла в Windows XP, зайдите в окно «Мой компьютер».
Сверху в меню окна найдите «Сервис» – «Свойства папки» – «Вид» и снимите там галочку «Скрывать расширения для зарегистрированных типов файлов» (привожу настройки для Windows XP). После того, как галочку сняли, нажимаем на «ОК». После этого расширения у файлов станут видны.
Просмотр расширений в Windows 7
В Windows 7, чтобы увидеть расширения для зарегистрированных файлов, надо пройти путь “Пуск” – “Панель управления” – “Параметры папок”:
Windows 7: как увидеть расширения файлов на своем ПК
Открыть вкладку “Вид”, снять галочку напротив опции «Скрывать расширения для зарегистрированных типов файлов» и нажать “ОК”. Расширения файлов в Windows 7 после этого перестанут быть для Вас “тайной за семью печатями”.
P.S. Советую также прочитать:
1. Откат файла к предыдущему состоянию и восстановление файлов в Windows 8
2. Директория, папка
3. Папки и файлы Windows 7
Распечатать статью
Получайте актуальные статьи по компьютерной грамотности прямо на ваш почтовый ящик. Уже более 3.000 подписчиков
.
Важно: необходимо подтвердить свою подписку! В своей почте откройте письмо для активации и кликните по указанной там ссылке. Если письма нет, проверьте папку Спам
Как обойти ограничение длинных путей через символьную ссылку
Такой трюк мы с вами уже проделывали, когда нужно было переносить IMAP профиль у Outlook. Смысл в том, что создается файл в нужном вам месте, и этот файл это просто ярлык ссылающийся на нужный вам файл или папку, после этого путь сокращается и вы можете удалять или создавать все что вам нужно. Откройте командную строку, далее вам нужно иметь два составляющих:
- Путь где будет лежать файл символической ссылки — в моем примере C:\короткий путь
- Длинный путь — C:\Share\WINDOW~1\C73D~1\C6BF~1 \D915~1\5C04~1\B4E5~1\260MIC~1
Нам поможет команда mklink, где ключ /D создает ссылку на каталог
mklink /D «C:\короткий путь» «C:\Share\WINDOW~1\ C73D~1\C6BF~1\D915~1\5C04~1\B4E5~1\260MIC~1»
Символическая ссылка успешно создана, можно проверять.
Откройте каталог с укороченным путем и попробуйте создать просто папку, в итоге она будет создана именно по тому длинному пути, как видите легко можно обходить ограничение в 260 символов.
Решение
Способ 1. Subst
Раньше я делал так – с использованием команды subst создавал новую точку монтирования в виде логического диска и прятал за него часть длинного пути. Иной раз повторял раз по 5, чтобы добраться до самого дна и начать удалять эти папки. Ведь удалить их штатным способом не представлялось возможным.
Всякие там Unlocker, Far, Total Commander и прочие – не помогали.
Допустим имеем вот такой путь:
Выполним ряд команд:
Теперь в системе появится новый логический диск K:, внутри которого будет остаток пути “LongDirName\Сохранённые страницы\Удалить потом\Никогда не удалять!!!!!!!\Последняя папка\Новая папка\Новая папка (1)\Новая папка (2)\Новая папка (4)\Окончательный отчёт\Последняя версия\Удалить\Отправлено\С чёрной флешки\Скинуть\От Димона\Присланное\Документы\Новый документ Microsoft Word.doc”
Но и его удалить не получится, нужно делать новую точку монтирования:
Появится новый диск L:, внутри которого остались “От Димона\Присланное\Документы\Новый документ Microsoft Word.doc”
Содержимое L: можно удалить, так как путь уже не такой длинный, затем удалить сам L:
Теперь можно удалить содержимое K:, а затем и сам K:. Ну и остаток пути теперь тоже удалится. Вот так раньше делал я.
Муторно, не правда ли? Не то слово, иной раз приходилось занимать 5-6 букв, чтобы добраться до низа. А там ещё папки ветвились.
Способ 2. Команда robocopy
Совершенно случайно натолкнулся на эту команду. В Windows 7 уже идёт штатно, существует и в более современных версиях. Это просто бомба! Богатый функционал, позволяющий как делать задания на копирования и синхронизацию каталогов, так и, при определённом баловстве ключами, удалять вот такие длинные каталоги. Есть ключи для того, чтобы сделать “зеркало” каталога. Так вот, если сделать зеркало пустого каталога, то целевой каталог тоже станет пустым. Пример такой:
D:\empty – пустой.
Мы хотим отрезать часть пути из нашего примера до “D:\verylongpathname\someofthepath\”. Выполним команду:
MIR – обозначает в данном случае Mirror. И наш последний каталог nameofthelongfilename будет содержать то же самое, что и каталог D:\empty – т.е. пустой. Его можно и удалить при желании.
Посмотрите хелп по этой программе, она реально обладает богатым функционалом. При помощи её я копировал файлы на тот же диск, оставляя прежние атрибуты времени. А как мы смотрели в предыдущей статье, копирование файла создаёт новую запись MFT и у неё будут текущие атрибуты времени (а иногда нужно оставить прежние).
Правда при копировании одиночных файлов немного было неудобно – синтаксис непривычный, ибо команда оперирует не файлами как copy, xcopy и т.д, а каталогами. И чтобы скопировать конкретно файл a.txt из каталога D:\dir1 в C:\dir2 приходится указывать:
Как обойти ограничение на создание файла с длинным путем
Понятно, что восстановление при таком длинном пути не сработает – ведь нужно скопировать файл в исходное расположение. Но я сходу не понял, почему возникли затруднения с копированием файла в любое другое место – главное же было вернуть файл пользователю. Проводник же может скопировать файл из длинного пути.
Так или иначе, я получил письмо в метро, и поэтому с телефона по-быстрому отправил ответ, который должен был обойти препятствие. Я предложил создать символическую ссылку на часть пути:
mklink /d c:\link "\\localhost\D$\sales\0-Коммерческий отдел (общий ресурс-обмен)\Общий ресурс (тел., реестры,реквизиты)\"
Теперь копирование файла в C:\link должно было вернуть его на прежнее место. И это сработало 🙂
Такое решение пришло мне в голову не случайно – ведь вопрос был о теневых копиях, а я уже рассказывал, как войти в них с помощью символической ссылки. Позже, когда я готовил эту заметку и рылся в своей записной книжке, всплыло и другое решение, которым я делился три года назад.
subst V: "\\localhost\D$\sales\0-Коммерческий отдел (общий ресурс-обмен)\Общий ресурс (тел., реестры,реквизиты)\"
Команда subst сопоставляет папку букве диска, и при желании одной командой можно моментально занять все буквы! В принципе, если путь супер-длинный, это может пригодиться, т.к. придется создавать серию сопоставлений.
Справочник по групповому переименовыванию файлов через totalcommander
В программе тоталкомандер есть мощный встроенный функционал, и его частью как раз и является групповое переименовывание файлов. Вы можете задавать так называемую маску для массового редактирования. — вставьте этот код в поле имени для сохранения старого названия файла. — напишите вот так, если хотите чтобы все названия были с заглавной буквы. — первый символ в названии файла. Можно использовать в маске, например, при замене символов. — три символа из старого названия, с второго по четвертый. — все символы названия, начиная с третьей буквы. — третий символ с конца имени файла. — пять символов после первой буквы. — расширение файла. (можно писать и в названии, если оно нужно.)
Счетчики. Хочется отдельно отметить полезную функцию счетчиков при переименовывании файлов. Например, нам нужно проставить порядок файлов в начале названия или в конце (или в средине, использую маску). — простой счетчик, который нумерует файлы по очереди двухзначным числом. (01, 02…77,78) — тоже самое, только цифра уже трехзначная (001,002,003…) — расширенный вариант счетчика. Первая единица — с какой цифры начинать, вторая единица — шаг счетчика, после двоеточия — двухзначное число. То есть эта конструкция будет добавлять 01,02,03… к каждому файлу по очереди. Если написать , то счетчик начинает работать 005 с шагом 2 (007,009,011…)
Даты и время. Также в имя файла можно добавить — время, — дату, — день, — месяц, — год.
Если хотите конкретные примеры пакетного переименовывания файлов — не стесняйтесь, пишите!
Как временно исправить проблему с файлами?
Легкое Исправление
Если вам повезет, вы получите ошибку и точно знаете, какое имя файла вызывает проблему. Или, по крайней мере, где найти файл. Может быть, у вас есть имя файла, которое выглядит примерно так:
C:\User\guymc\Documents\My Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx
Понятно, кто в этом случае виновник. Найдите файл в проводнике Windows или в проводнике, как он называется в Windows 10, нажмите один раз на него, нажмите F2, чтобы переименовать его, и измените это глупое имя файла на более разумное. Задача решена.
Менее простые исправления
Не всегда легко решить эту проблему. Иногда вы не можете изменить имена файлов или каталогов по любой причине.
Следующие решения помогут вам. Их несложно сделать.
Перемещение, удаление или копирование файлов или каталогов с помощью PowerShell Иногда вы получаете сообщение об ошибке при попытке переместить, удалить или скопировать каталоги, где количество символов для пути к файлу превышает 260.
Обратите внимание, что слова каталог и папка являются взаимозаменяемыми. Мы будем использовать «каталог» в будущем
Следующие командлеты PowerShell также можно использовать для файлов.
Возможно, путь к файлу выглядит примерно так:
C:\Users\guymc\Documents\This\Is\Exactly\The\Precise\Directory\Path\That\I\Need\To\Have\To\Keep\My\Files\Sorted\In\A\Manner\That\Makes\Sense\To\Me\So\Lets\Pretend\This\Is\An\Actual\Filepath\That\You\Might\Also\Have\On\Your\Windows\Computer\And\Not\Over\Think\It\Document.docx
Этот путь к файлу составляет 280 символов. Поэтому мы не можем скопировать каталог оттуда куда-либо еще с помощью обычного метода копирования-вставки. Мы получаем ошибку Destination Path Too Long.
Давайте предположим, что по какой-то причине мы не можем переименовать каталоги, в которые вложен файл. Что мы делаем?
Когда откроется PowerShell, вы окажетесь в корне своего пользовательского каталога. Продолжайте, предполагая, что C:\Users\guymc — ваш пользовательский каталог.
Каталог с именем This находится в каталоге Documents. Чтобы перейти в каталог Documents, мы используем команду .
Вы увидите быстрое изменение текущего каталога на C:\Users\guymc\Documents. Это хорошо. Мы работаем ближе к каталогам, которые облегчат жизнь.
Копирование каталога с использованием Copy-Item
Мы хотим скопировать каталог This и его содержимое в ThatNewFolder. Давайте используем команду PowerShell Copy-Item с параметрами -Destination и -Recurse.
-Destination сообщает PowerShell, где мы хотим, чтобы копия находилась. -Recurse говорит PowerShell скопировать все элементы внутри к месту назначения. Копирование оставляет оригиналы там, где они есть, и делает все новые в месте назначения.
Copy-Item This -Destination ThatNewFolder -Recurse
Переместить каталог с помощью Move-Item
Допустим, мы хотим переместить каталог This, а также все каталоги и файлы в нем, в ThatNewFolder. Перемещение не оставляет оригинал на месте.
Мы можем использовать команду PowerShell Move-Item с параметрами -Path и -Destination. -Path определяет элемент, который мы хотим переместить, и -Destination сообщает PowerShell, где мы хотим его получить.
Команда поместит это в ThatNewFolder. Он также будет перемещать все, что находится внутри этого каталога. Move-Item может использоваться для перемещения файлов или каталогов, и он работает независимо от пути к файлу или длины имени файла.
Move-Item -Path This -Destination ThatNewFolder
Чтобы убедиться, что это работает, используйте команду , чтобы войти в ThatNewFolder. Затем используйте команду для вывода списка каталогов в ThatNewFolder. Вы увидите, что этот каталог находится там.
Удалить каталог с помощью Remove-Item
Если мы хотим удалить этот каталог и все в нем, мы используем команду Remove-Item.
Командлет Remove-Item обладает некоторой встроенной безопасностью, которая затрудняет удаление каталога с содержимым внутри него. В нашем примере мы знаем, что хотим удалить все, поэтому мы будем использовать параметры -Recurse, чтобы заставить его удалять все внутри, и -Force, чтобы он делал это, не спрашивая нас, уверены ли мы в каждом элементе внутри.
Имейте в виду! Восстановить что-либо удаленное таким образом было бы чрезвычайно сложно.
Remove-Item This -Recurse -Force
Вы можете снова использовать команду dir, чтобы убедиться, что она пропала.
Вот и все
Существуют и другие способы обхода длинных имен файлов и путей к файлам, но то, что мы здесь рассмотрели, — это самые простые и эффективные методы.
Что делать, если слишком длинный путь к источнику, как удалить такой файл?
При наличии файла, который не удаляется из-за длинного имени, решить проблему можно несколькими вариантами. Например, файл вложен в несколько каталогов, допустим, пять или даже десять папок, которые имеют названия по 10-20 знаков, то это и может быть причиной не удаления файла. Дело в том, что Windows не поддерживает любые файлы, в названиях которых больше 260 символов. Если этот предел превышен, то появится ошибка, которую я показал выше. Количество папок, имеющие свои названия и само имя файла в сумме должны давать менее 260 символов. В системе также есть одна особенность – при превышении этого ограничения мы всё-таки можем переименовывать папки. А это значит, что необходимо переименовать все папки на короткое имя, например, буква или цифра.
Такая проблема может появиться не только из-за того, что вы дали такое длинное название. У меня это произошло тогда, когда я решил загрузить себе файлы сайты с сервера и кое-что сделать. Так как файлы уже были не нужны, я удалил весь каталог с файлами сайта, но как оказалось он содержал файл с очень длинным именем, плюс названия папок и это не дало мне всё это удалить.
Метод второй
поможет, если с первым не удалось. Дело в том, что не все папки, ведущие к файлу с длинным именем, могут переименовываться и будет вылетать всё так же ошибка файловой системы. Тогда вы можете создать виртуальный диск, используя любую из вложенных папок, ведущих к не удаляемому файлу. Сейчас я покажу, как это сделать.
Открываем командную строку. Для этого нажимаем сочетание Win+R и вводим команду cmd
. Можно нажать правой кнопкой мыши по меню Пуск (Либо сочетание клавиш Win+X) и выбрать там командную строку.
Теперь вы пишите такую команду, которая сделает для нас виртуальный диск:
Нужно выбрать такую букву диска, которая не занята другими. Системный раздел обычно указывается буков C, а второй раздел, как D или E, тогда выбираем любую другую.
Путь к папке нужно указывать от диска. Если у вас это вызывает сложность, то откройте ту папку, которая будет выступать в качестве виртуального диска и в проводнике вверху скопируйте путь до неё.
У меня эта команда выглядит следующим образом:
Когда мы зайдем в Мой компьютер, то там вы должны увидеть диск, с той буквой, которую мы ей присвоили из командной строки. Таким образом, путь к файлу сократиться практически в два раза, а это значит, что общая длинна символов может составлять менее 260 знаков. Теперь вы можете попробовать избавиться от неудаляемого.
Для того, чтобы виртуальный диск удалить нужно ввести команду:
subst БукваДиска /d |
Варианты решения
Вариантов решения видел 2:
1. Перенести xampp в голову диска
2. Создать алиас для этого пути (Например диск с именем H)
Второй вариант показался более простым, ведь для xampp пути не поменяются, а gitом будем заходить в папки через созданный алиас. Ну еще для правильной работы IDE придется изменить путь проектам.
И так, для того чтобы Windows подставляла вместо Вашего длинного пути, имя диска — выполняем через cmd команду:
Subst H: C:\Users\\Documents\xampp\htdocs\git\
Многим пользователям ПК под управлением ОС Windows, не говоря о разработчиках, знакомы проблемы при работе с длинными (более 260 символов, MAX_PATH) путями файлов или каталогов.
В данной статье рассматриваются способы избавления от этого пережитка при разработке приложений на различных платформах (WinApi, .Net Framework, .Net Core) и активации нативной поддержки длинных путей в Windows 10 (Anniversary Update).
Приложения Win API
В Windows 10 (1607) поведение функций для работы с файлами изменилось: появилась возможность отключить проверку ограничений MAX_PATH на уровне системы.
Это коснулось следующих функций:
Для работы с каталогами:
CreateDirectoryW, CreateDirectoryExW, GetCurrentDirectoryW, RemoveDirectoryW, SetCurrentDirectoryW. И для работы с файлами:
CopyFileW, CopyFile2, CopyFileExW, CreateFileW, CreateFile2, CreateHardLinkW, CreateSymbolicLinkW, DeleteFileW, FindFirstFileW, FindFirstFileExW, FindNextFileW, GetFileAttributesW, GetFileAttributesExW, SetFileAttributesW, GetFullPathNameW, GetLongPathNameW, MoveFileW, MoveFileExW, MoveFileWithProgressW, ReplaceFileW, SearchPathW, FindFirstFileNameW, FindNextFileNameW, FindFirstStreamW, FindNextStreamW, GetCompressedFileSizeW, GetFinalPathNameByHandleW.
.Net Framework
Вот что это даёт:
- При использовании префикса “\\?\” мы можем работать с длинными путями как в Win API, Directory.CreateDirectory(«\\\\?\\» + long_dir_name);
- Если активировать нативную поддержку длинных имен файлов Windows 10 (1607), то даже не потребуется использовать префикс!
Как включить:
- Использовать.Net Framework 4.6.2 как цель при сборке приложения.
- Использовать конфигурационный файл, например, если приложение уже было собрано под.Net 4.0:
.Net Core
Как включить:
Всё работает из коробки. В отличие от реализации в.Net Framework – тут нет необходимости в добавлении префикса “\\?\” – он добавляется автоматически при необходимости.
Вот можно посмотреть пример.
Как включить поддержку длинных путей в Windows 10 (1607)
Включить встроенную поддержку длинных путей можно создав или изменив следующий параметр системного реестра: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem Параметр LongPathsEnabled (Тип: REG_DWORD) 1 – соответствует значению включено.
Или через групповые политики (Win+R\gpedit.msc) Computer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths.
Оно же в локализованном варианте: Конфигурация компьютера > Административные шаблоны > Система > Файловая система > Включить длинные пути Win32.
Далее источники расходятся во мнении относительно манифеста (или я неправильно понял, но на данный момент проверить не имею возможности). Например, в документации MSDN написано, что манифест можно использовать в качестве альтернативного способа активации поддержки длинных путей в отдельных приложениях, а в блоге MSDN указано, что это является вторым обязательным шагом после активации в политиках.
Но они сходятся в формате задания данной опции:
true
С CMD, к сожалению, это не сработает, на данный момент, из-за особенностей работы с путями, а в PowerShell должно всё заработать.
P.S.
Спасибо за внимание!
Длинный у нас получился заголовок получился, но он указывает на суть проблемы, которая будет здесь описана. Недавно я столкнулся с не очень хорошей ситуацией. Сортируя на жёстком диске и очищая его от ненужного, я обнаружил, что один из файлов не удаляется, а появляется ошибка следующего содержания: «Файловая система не поддерживает такие длинные имена исходных файлов. Попробуйте перенести файл в папку с меньшей длиной пути или укажите более короткое имя файла и повторите попытку».
Я не только не мог удалить файл, но еще и изменить имя на более короткое имя тоже не удалось. Для многих это показалось бы тупиком, ведь получается, что файл не удаляем.
На самом деле проблема решается очень просто и быстро, и сейчас я опишу два метода её решения, а каким пользоваться решать только вам.