Не можу видалити файл занадто довге ім'я. Якщо не видаляється файл з довгим ім'ям і з'являється помилка, що файлова система не підтримує такі довгі? Що робити, якщо занадто довгий шлях до джерела, як видалити такий файл

Не секрет, що провідник Windows, Як і більшість інших Windows-додатків, включаючи PowerShell, не вміють працювати з об'єктами файлової системи з глибокої вкладеністю папок, довжина шляху до яких перевищує 260 символів. Причому це обмеження існує тільки на рівні додатків, а сама файлова система NTFS підтримує шляху до файлів аж до 32767 символів.

Дане обмеження накладено бібліотекою Win32 API, А якою максимальна довжина шляху складає 260 символів ( MAX_PATH = 260). У загальному випадку шлях формується з наступних елементів: + [Путь_із_256_сімволов] + [ ] , Причому максимальна довжина одного каталогу / файлу в NTFS - 255 символів в Unicode. При використанні Юнікодние функцій API, можливо використовувати шлях до 32767 символів. Завдяки цьому багато сторонні програми(Ті ж популярні файлові менеджери, наприклад FARі Total Commander) Без будь-яких труднощів обробляє файли / папки, довжина шляху до яких перевищує 260 символів.

Порада. Обійти це обмеження Win32 API і працювати з довгими іменами файлів можна за рахунок використання UNC-формату шляху, вказуючи абсолютний шлях до файлу з використанням префікса extended-length path \\?\ . Наприклад, так \\? \ C: \ SomeLongPath \ LongNameFile.txt

Це обмеження також не діє при мережевому доступі користувачів до файлів по протоколу SMB (за рахунок цього каталожні структури з довгими шляхами нерідкість саме на файлових серверах з одними даними). Адміністратор, який обслуговує даний серверне може через стандартний інтерфейспровідника Windows Explorer управляти (видаляти / переміщати) файли з довгими шляхами. При спробі створити / скопіювати файл в такий каталог, з'являється помилка:

Destination Path Too Long. The file name (s) would be too long for the destination folder. You can shorten the file name and try again, or try a location that has a shorten path

Інші програми / діалогові вікна можуть повідомляти про наявність обмеження по своєму.

Погодьтеся забавно, що за вікном 2014 рік, а ми до сих пір говоримо про обмеження в 260 символів на максимальну довжину шляху в Windows ... Але схоже найближчим часом ніяких кардинальних змін не передбачається, і навіть в зовсім свіжої Windows 10 Technical Preview це обмеження все ще існує.

У цій статті ми покажемо, як в Windows можна працювати з файлами, шлях до яких перевищує 260 символів. В даному кейсі наше завдання - видалити каталог, що містить файли з великою довжиною шляху.

При спробі видалити такий каталог з провідника з'являється помилка:

The file name (s) would be too long for the destination folder. You can shorten the file name and try again, or try a location that has a shorten path.

Powershell також не вміє коректно обробляти каталоги і файли з великими шляхами, що перевищують 260 символів. При спробі видалити каталог з такими файлами (C: \ Install \ MS SQL 2012 Express Edition 64 bit \ verylongpath) з'являється помилка:

Remove-Item. \ Verylongpath -Recurse

Remove-Item: The specified path, file name, or both are too long. The fully qualified file name must be less than 260
characters, and the directory name must be less than 248 characters.
At line: 1 char: 1
+ Remove-Item. \ Verylongpath -Recurse
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: WriteError: (C: \ Install \ MS S ... it \ verylongpath: String), PathTooLongExcepti
on
+ FullyQualifiedErrorId: RemoveItemIOError, Microsoft.PowerShell.Commands.RemoveItemCommand

Найпростіший варіант (він, власне, і пропонується в вікні з помилкою) - скоротити назву батьківських папок, зменшивши загальну довжину шляху (але може бути застосовано не завжди).

Mklink / d c: \ install \ link "C: \ Install \ MS SQL 2012 Express Edition 64 bit \ verylongpath"

Ще один варіант, що нагадує роботу з символічним посиланням - зіставити проблемну папку віртуального диску (в нашому прикладі X :), тим самим також скоротивши довжину шляху:

Subst X: "C: \ Install \ MS SQL 2012 Express Edition 64 bit \ verylongpath"

Тепер можна працювати з даними на диску X :, шляху до файлів в якому не перевищуватимуть ліміт. Після закінчення роботи можна видалити віртуальний диск:

Subst X: / d

Але особисто мені найбільше для завдання видалення даних в таких ситуаціях подобається можливості robocopy.exe, Яка підтримує роботу з довгими шляхами.

За допомогою опції / MIR, утиліта robocopyможе створити повну копію (дзеркало) вихідного каталогу в цільовому. І, якщо вихідна папка порожня, всі дані в цільової папцітакож очищаються. Створимо порожню папку C: \ Install \ testі за допомогою аргументу / MIR виконаємо копіювання вміст тестової папки в цільову (якщо ім'я папки містить прогалини або символи кирилиці, шлях потрібно взяти в лапки).

Robocopy / MIR C: \ Install \ test "C: \ Install \ MS SQL 2012 Express Edition 64 bit \ verylongpath"

Після виконання команди вміст каталогу C: \ Install \ MS SQL 2012 Express Edition 64 bit \ verylongpath очищається (заміняться вмістом порожнього каталогу).

Отже, сьогодні ми показали кілька простих трюків, які можна використовувати при роботі з папками на файлових серверах, що містять папки, довжина шляху до яких перевищує ліміт 260 символів.

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

Я не тільки не міг видалити файл, але ще і змінити ім'я на більш коротку назву теж не вдалося. Для багатьох це здалося б тупиком, адже виходить, що файл не видаляємо.

Насправді проблема вирішується дуже просто і швидко, і зараз я опишу два методи її вирішення, а яким користуватися вирішувати тільки вам.

Що робити, якщо занадто довгий шлях до джерела, як видалити такий файл?

При наявності файлу, який не видаляється через довгий імені, вирішити проблему можна декількома варіантами. Наприклад, файл вкладений в кілька каталогів, припустимо, п'ять чи навіть десять папок, які мають назви по 10-20 знаків, то це і може бути причиною не видалена файлу. Справа в тому, що Windows не підтримує будь-які файли, в назвах яких більше 260 символів. Якщо ця межа перевищено, то з'явиться помилка, яку я показав вище. Кількість папок, що мають свої назви і саме ім'я файлу в сумі повинні давати менше 260 символів. В системі також є одна особливість - при перевищенні цього обмеження ми все-таки можемо перейменовувати папки. А це означає, що необхідно перейменувати всі папки на коротку назву, наприклад, буква або цифра.


Така проблема може з'явитися не тільки через те, що ви дали таку довгу назву. У мене це сталося тоді, коли я вирішив завантажити собі файли сайти з сервера і дещо зробити. Так як файли вже були не потрібні, я видалив весь каталог з файлами сайту, але як виявилося він містив файл з дуже довгим ім'ям, плюс назви папок і це не дало мені все це видалити.

метод другийдопоможе, якщо з першим не вдалося. Справа в тому, що не всі папки, що ведуть до файлу з довгим ім'ям, можуть перейменовувати і буде вилітати все так же помилка файлової системи. Тоді ви можете створити віртуальний диск, використовуючи будь-яку з вкладених папок, що ведуть до не видаляти файлу. Зараз я покажу, як це зробити.

відкриваємо командний рядок. Для цього натискаємо поєднання Win + R і вводимо команду cmd. Можна натиснути правою кнопкою миші по меню Пуск (Або поєднання клавіш Win + X) і вибрати там командний рядок.

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

Потрібно вибрати таку букву диска, яка не зайнята іншими. Системний розділ зазвичай вказується буків C, а другий розділ, як D або E, тоді вибираємо будь-яку іншу.

Шлях до папки потрібно вказувати від диска. Якщо у вас це викликає складність, то відкрийте ту папку, яка буде виступати в якості віртуального диска і в провіднику вгорі скопіюйте шлях до неї.

У мене ця команда виглядає наступним чином:

Коли ми зайдемо в Мій комп'ютер, то там ви повинні побачити диск, з тією буквою, яку ми їй присвоїли з командного рядка. Таким чином, шлях до файлу скоротитися практично в два рази, а це значить, що загальна довжина символів може становити менше 260 знаків. Тепер ви можете спробувати позбутися від видаляється.


Для того, щоб віртуальний диск видалити потрібно ввести команду:

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

Використовуємо Total Commander

В інтернеті я виявив метод, який дозволяє видалити не видаляти файли за допомогою. Звичайно, мінус тут в тому, що доведеться встановлювати додатковий софт на комп'ютер, а це не всі захочуть робити. У будь-якому випадку залишу цей спосіб тут, раптом хто захоче скористатися.

Завантажуємо і встановлюємо програму. Йдемо у вкладку «Файл»клацаємо по розділу «Змінити атрибути». З'являється віконце, де прибираємо галки з усіх атрибутів. Якщо вгорі не варто галочка навпроти пункту «Обробляти вміст каталогів»- вибираємо. Тепер з цієї ж програми пробуємо видалити файл з довгим ім'ям.


Використовуємо архіватор 7-Zip

Для цієї справи нам знадобиться архиватора 7-Zip. Натискаємо правою кнопкою миші по початковому каталогу і направляємо миша на розділ «7-Zip»і вибираємо пункт «Додати до архіву».

З'являється вікно, в якому вам потрібно відзначити тільки одну галочку «Видаляти файли після стиснення». Потім натискаєте ОК.

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

Ось такі способи щодо виправлення помилки не видаляється файлу ми розглянули. Може бути у вас є ще варіанти, як можна це зробити?

шкідлива операційна система Windows не дає Вам видалити файл і кричить, що у нього «Занадто довгий шлях до джерела»? У цій статті я розповім Вам як легко і просто, без будь-яких програм, перемогти цю напасть скоротивши ім'я файлу.

Занадто довгий шлях до джерела - чому?

Відразу хочу пояснити, чому з'являється таке системне попередження і не вдається зробити з файлом (папкою) елементарні дії копіювання або видалення ...

В самому повідомленні написана відповідь на це питання - файлова система Windowsне підтримує (не розуміє) імена вихідних файлів довше 255 символів.

Але ім'я файлу або папки у Вас коротке, наприклад, «Фото з відпустки»? Справа в тому, що «дурна» система сприймає весь шлях до файлу як його ім'я. Якщо Ваш файл або папка лежать десь дуже глибоко в файловому менеджері, То його ім'я для неї буде виглядати приблизно так ...

Ось і збираються символи імені в банду з понад 255 штук.

Як видалити не видаляється файл або папку в такому випадку? Дуже просто - потрібно скоротити ім'я файлу (шляху) методом перейменування вкладених один в одного папок.

Як видалити файл з довгим ім'ям

Покажу на своєму прикладі як видалити файл з довгим ім'ям у якого, як пише система, занадто довгий шлях до джерела.

вчора вирішив почистити свій комп'ютервід старих резервних копійсайту, а вони не захотіли віддалятися. Як Ви здогадалися - з'явилося попередження про занадто довгому шляху до джерела ...

Починаючи з найпершої папки в цьому довгому шляху - перейменував кілька штук ...

... і повторив спробу позбутися від файлу з тепер більш коротким ім'ям - він благополучно відправився в країну віддалених файлів.

Природно, що нове ім'я файлу (папки) має складатися з одного символу або цифри, як у мене в прикладі.

Ось так просто вирішується проблема видалення файлів або папок з довгим ім'ям. Це не єдиний метод звичайно. Можна, можливо спеціальними програмами видалятиабо через реєстр - я лише показав ручний спосіб. У кого-то він займе хвилину все, а у кого-то і півгодини - вирішувати Вам, як скоротити ім'я файлу і занадто довгий шлях до джерела.

до нових корисних пораді цікавих комп'ютерних програм.

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

Як бачимо, на диску «D» (Дані) є вихідна папка відео, в ній папка «Фільми», в ній «Все що потрібно для перегляду фільмів» і далі таким же чином папка в папці. При цьому багато папки мають довгі назви назви - більше 10-15 символів, що в сумі дасть обсяг символів у всіх назвах більше 260. І якщо в кінці такої «матрьошки» буде лежати файлик, то може вийти так, що працювати з ним ви не зможете ... іноді сама система не дає створити в кінцевому підсумку папку або файл перевищує допустиму кількість символів, але іноді чомусь таке відбувається.

На початку для новачків поясню, що таке шлях до файлу та папки. Шлях - це так званий адресу в комп'ютері, за яким розташовується файл або папка. Наприклад, файл під назвою «Мій файл.txt» лежить на локальному диску D: в папці «Документи». Тоді шлях до цього файлу буде виглядати так:

D: \ Документи \ Мій файл.txt

Або, наприклад, ось так буде виглядати шлях з прикладу вище, де я показав складну структуру папок.

Як видно, кількість символів в шляху вище велике і не виключено те, що в кінці буде лежати файл або папка з довгою назвою, який ви не зможете видалити.

При спробі видалити файл з довгою назвою шляху до нього, ви отримаєте вікно з помилкою такого роду:

Я спробував штучно відтворити проблему і ось що у мене вийшло.

На диску «D» створив папку коротким ім'ям «1» і в неї помістив файл з дуже довгою назвою. Ось приклад:

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

Що цікаво, Windows вільно дає перейменувати папку ось в таку довгу назву, незважаючи на те, що кількість символів в назві цієї папки + назві файлу вже перевищує 260! Ну і після такого ось перейменувати папку в довгу назву, я вже не можу видалити файл, розташований в ній і отримую помилку, показану.

Або ось ще приклад ... Я обслуговую сайт Московського приладобудівного технікуму, в якому раніше працював на повну ставку і іноді для тестування якихось нових «булочок» для сайту використовую копію сайту на своєму комп'ютері. А то раптом я щось недобре встановлю і сайт на хостингу помре? :) А так я у себе на комп'ютері перевіряю і якщо все в порядку, то вже налаштовую на реальному сайті, розташованому на хостингу. Так ось, один раз я переніс собі з хостингу весь сайт щоб протестувати одну річ і після того як закінчив працювати, вирішив видалити з комп'ютера папку з сайтом. Адже важить вона порядку 6 Гб. Сайт пішов весь, крім ряду папок. Я почав дивитися і побачив, що ні пішли ті папки, які містили в собі файл з довжелезною назвою у вигляді ієрогліфів:

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

Як вирішити проблему видалення папки / файлу з довгою назвою шляху!

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

    Перейменувати кілька папок в шляху до файлу в більш коротку назву. Це саме найпростіше рішення, яке вже має багатьом допомогти! Припустимо у вас в папці з дуже довгою назвою лежить файл, який ви не можете видалити, відкрити, скопіювати, та й взагалі працювати з ним не можете.

    Тоді спробуйте просто перейменувати папку, в якій лежить файл з довгою назвою, наприклад, в «1». Повернуся до одного з прикладів вище. Ось є папка з довгою назвою:

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

    Тепер, з файлом можна спокійно працювати, система дасть його відкрити, перейменувати і видалити.

    Якщо ж у вас довге дерево папок, тобто як матрьошка, в одній папці інша, в ній ще, потім ще, то перейменовувати починайте з найпершої папки з цієї матрьошки. Чи не з останньої за списком, а з першої!

    Може бути так, що папок величезна кількість і перейменувати якісь з них не вийде з-за тієї ж помилки або це займе у вас багато часу. В такому випадку пропоную другий спосіб.

    Спосіб полягає в тому, що ви можете взяти якусь папку, наприклад, в середині загального дерева і підключити її у вигляді віртуального диска. Віртуальний диск - це те, що нагадує нам звичайний локальний диск, але який просто прив'язується до певної папці, наприклад, для швидкого взаємодії з нею.

    Припустимо у вас є приблизно такою ось довгий шлях:

    D: \ Відео \ Мої фільми \ Все що потрібно для перегляду фільмів \ Програми для перегляду фільмів \ Як відкривати фільми MP4 \ Список фільмів-прикладів MP4 \ Перелік програм для відкриття MP4 \ Що не можна робити при відкритті файлів MP4

    Припустимо, що в самої останньої папці у нас лежить якийсь проблемний файл, з яким ми не можемо працювати, оскільки шлях до нього, як бачимо, вельми пристойною довжини :)

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

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

    Відкрити її можна через пошук Windows. У пошуку так і наберіть «Командний рядок»:

    У вікні командного рядка нам потрібно набрати команду:

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

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

    Як шлях до папки ви вставляєте шлях до тій папці, яку хочете підключити як віртуальну. Як я вже говорив, в моєму прикладі віртуальної папкою зробимо «Програми для перегляду фільмів», а значить шлях потрібно вказати ось такий:

    D: \ Відео \ Мої фільми \ Все що потрібно для перегляду фільмів \ Програми для перегляду фільмів \

    Отже, підсумкова команда в моєму випадку буде виглядати ось так:

    subst X: «D: \ Відео \ Мої фільми \ Все що потрібно для перегляду фільмів \ Програми для перегляду фільмів \"

    Щоб виконати введену команду, натискаємо кнопку «Enter» на клавіатурі. Віртуальний диск буде створений.

    Тепер перейдемо в провідник Windows, зайдемо в розділ «Цей комп'ютер» (або «Комп'ютер») і бачимо там створений віртуальний диск:

    Відрізнити його можете за буквою. Я привласнював букву «X» віртуального диску. Тепер якщо відкрити цей віртуальний диск, то ми відразу опинимося в папці «Програми для перегляду фільмів». Тобто ми взяли і зрізали нафіг половину шляху до кінцевої папці.

    Для порівняння…

    Раніше шлях до кінцевої папці виглядав так:

    D: \ Відео \ Мої фільми \ Все що потрібно для перегляду фільмів \ Програми для перегляду фільмів \ Як відкривати фільми MP4 \ Список фільмів-прикладів MP4 \ Перелік програм для відкриття MP4 \ Що не можна робити при відкритті файлів MP4

    Після підключення віртуального диска до папки «Програми для перегляду фільмів» шлях до кінцевої папці виглядає так:

    X: \ Як відкривати фільми MP4 \ Список фільмів-прикладів MP4 \ Перелік програм для відкриття MP4 \ Що не можна робити при відкритті файлів MP4

    Відчуваєте різницю? Шлях скорочений в два рази, оскільки буква диска відразу ж направляє нас до папки в середині шляху :) А оскільки шлях сильно скорочений, напевно тепер ви зняли обмеження по символам в назвах файлів і папок і зможете видалити файл або папку з довгою назвою!

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

    Для цього знову відкрийте командний рядок Windowsі введіть команду:

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

    У моєму випадку буква диска «X», тому команда буде виглядати ось так:

Коли я думав над варіантами вирішення проблеми, як видалити папку або файл з довгою назвою, в інтернеті знаходив ще такий от варіант: видалити проблемний файл через програму «Total Commander». Спробував, ніфіга не вийшло, тому і радити такий спосіб не став :)) Та й спосіб, навіть якщо він у кого-то б і заробив, чесно кажучи, не прикольний, тому що доводиться ставити додаткову програму на свій комп'ютер заради видалення одного лише файлу або папки з довгою назвою ...

Я думаю, при виникненні подібної проблеми, яка у мене виникала жоден раз, вам обов'язково допоможе один з вищеописаних способів.

На цьому все! До швидких зустрічей в наступних статтях;)

Сподобалася стаття? Поділіться з друзями!