Як видалити файл із занадто довгим шляхом, щоб видалити [копіювати]


203

Я працював з я знайшов вихідний код комп'ютерного зору і не зрозумів, що він створює файл кешу, який має ДУЖЕ ІМЕННЕ ім'я, і ​​тепер я не можу видалити 2 з них.

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

Повідомлення про помилку говорить:

Шлях до місця призначення занадто довгий.

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

скріншот

Як я можу видалити файли в цьому випадку?


Чи буде це працювати з командного рядка з delкомандою? Щось поряд з рядками del *.cacheмає видалити всі файли .cache у поточному каталозі.
Райан

"Шлях \ до \ папку \ CACHEI ~ Система не могла знайти вказаний файл", сказала, що там двічі, а там є два файли, але нічого не зробили
Кріс

Подумавши, ви можете перевірити одне з інших запитань, на яке вже відповіли. Цей, наприклад.
Райан

1
Якщо ці два файли єдині, що залишилися в каталозі, то, можливо, вам буде більше удачі видалити весь каталог. У командному рядку спробуйте rd /s directoryname Це directoryname
видалить

Відповіді:


352

Якщо припустимо, що ви знаходитесь у Windows:

Що я завжди роблю, це використовувати subst для створення асоціації літер диска з частиною шляху.

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

Щоб створити папку субстратів

  1. Запустіть командний рядок (не потрібні права адміністратора)
  2. Використовуйте cdдля переходу до папки, в яку ви хочете перейти (ви можете використовувати tabдля автозаповнення імен
  3. введіть subst j: .для створення асоціації драйверів. (замість. ви можете також ввести весь шлях)
  4. Тепер у Провідника у вас на цьому ПК є нова літера диска . Перейдіть до цього і зробіть все, що вам потрібно зробити, для файлів .cache.
  5. Поверніться до вікна cmd та введіть subst /d j:для видалення диска або, перезавантажте комп'ютер.

EDIT: Трюк, який я навчився, що може скоротити це трохи. У вікні Провідника, де у вас виникли проблеми, натисніть на адресний рядок, щоб ви могли ввести його, а потім введіть cmdі натисніть, Enterщоб запустити командний рядок у цьому місці, а потім перейдіть до кроку 3. :)

EDIT2: Гаразд, цей трюк можна розширити ще більше. Якщо ви знаходитесь в досліднику на правильному шляху, просто введіть в subst j: .адресному рядку і натисніть клавішу Enter. З'явиться вікно команд, виконає команду і знову закриється, і там ви переходите, у провіднику з'являється новий накопичувач.


26
Robocopy empty_dir base_nested_dir / продування - Просто створіть порожній каталог, і сказати Robocopy , щоб очистити все в цільовому каталозі , який не перебуває у порожньому каталозі stackoverflow.com/a/3320317/588759
rofrol

7
Я просто спробував це, і я не міг видалити файл, про який йде мова. Я використовую cygwin з Windows, альтернативне рішення - видалити файл таким чином: rm -R / path / in / question, поки жодна інша програма не використовує файл вам добре їхати
Іоанн

1
У мене виникла проблема, коли SUBST не розпізнав J: як параметр (він також не бачив доступних віртуальних дисків), тому параметр cygwin, згаданий Джоном, працював добре.
Тиш

1
@rofrol, вам слід зробити коментар з роботокопію відповіддю: це набагато простіше, ніж робити підходи до імен каталогів, коли маєте справу з безліччю довідників (наприклад, створеними в node_modules)
Енді Браун

1
Рішення Джона дуже добре спрацювало для мене, тільки що додав -f (параметр сили): rm -R -f / pathToDelete
Крістоф Келлер

67

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

Але видалити файл, ім'я якого перевищує 255 символів:

  • Відкрийте командний рядок, запустивши "CMD.EXE"
  • Перейдіть до папки, де зберігається файл
  • Скористайтеся командою DIR / X, яка відобразить короткі назви файлів.
  • Видаліть за допомогою короткого імені.

тобто, якщо файл названий "verylongfilename.fil", коротке ім'я відобразиться як щось на зразок "verylo ~ 1.fil", і його можна видалити, використовуючи це ім'я.

Зауважте, що хоча сама Windows може обробляти шляхи набагато довші, ніж 255 символів, більшість графічних інтерфейсів, як-от Windows Explorer, обмежена меншою межею.


16
Це краща відповідь, ніж прийнята на.
Бен

3
Обрана відповідь краще, тому що ви можете видалити цілі папки цим методом
mcont

2
але в Windows 7 здається, що DIR / x взагалі не змінює жодного дисплея ... :(
gumuruh

3
Деякі файлові системи NTFS НЕ мають 8,3 еквівалентів. Тому це не завжди працює.
Росс Пресер

Del / S від CMD працював на мене навіть з великим іменем 8
Jeff

4

Googled: видаліть довге ім'я файлу Перший результат

Використовуйте http://www.lockhippo.com/download_unlocker/ Unlocker/

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

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


1
Я бачив це, але не знав, чи розблоковувач безпечний у використанні, тому я проігнорував його, я спробую це випробувати. EDIT: не працювало. він працює на інших файлах, але розблокувач не з’являється у спадному меню
Кріс

Безумовно, найпростіший спосіб зробити це, хоча для завершення може знадобитися перезавантаження. З Unlocker взагалі нічого поганого - використовуйте його роками, і це дуже корисна утиліта. У випадку файлу чи папки, шлях якого занадто довгий, він не знайде ручки блокування, але повинен запропонувати параметр Видалити у спадному меню згодом.
Стів Петтіфер

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

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

Це була єдина відповідь, яка працювала на мене (я використовую Windows 10). Дуже дякую!
user26832

4

Microsoft має корисну статтю бази знань про видалення файлів, що не змінюються . Причина №4 для вас актуальна.

Найкраще, мабуть, було б зіставити диск у папку, у якій знаходиться файл (роздільна здатність №3), а потім увійти через цей диск і видалити його.


1
Я ніколи раніше не усвідомлював, що зможу "зіставити мережевий диск" до місця на власному жорсткому диску. Ось що я зробив у Windows Explorer. Після переходу на диск, я міг легко видалити папку та вміст. Той самий принцип, що і в консольних рішеннях, показаних вище, але це швидке графічне рішення, яке було простішим для мене.
RandomHandle
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.