Як видалити занадто довгий шлях. Назва файлу або занадто довгий шлях до джерела. Використовуємо Total Commander

24.10.2019 Новини

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

Як бачимо, на диску "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». Спробував, ніфіга не вийшло, тому й радити такий спосіб не став:)) Та й спосіб, навіть якщо він у когось і заробив би, чесно кажучи не прикольний, бо доводиться ставити додаткову програмуна свій комп'ютер задля видалення одного лише файлу або папки з довгою назвою.

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

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

Не секрет, що провідник 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. File name (s) може бути довгим для вкладника folder. Ви можете згорнути файл ім'я файлу і спробувати, або спробувати місце, яке має згорнутий шрифт

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

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

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

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

File name(s) може бути довгим для запису folder. Ви можете згорнути файл ім'я файлу і спробувати, або спробувати місце, що ви маєте згорнуті.

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

Remove-Item .\verylongpath -Recurse

Remove-Item: Спеціальна cestа, назва файлу, або як є довгий. fully qualified file name must be less than 260
characters, і в directory name повинні бути не більше 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 символів.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

subst ЛітераДиска /d

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

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

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


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

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

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

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

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