Примушуйте видаляти файли з досить великим іменем


62

Я регулярно використовую Node.js для управління залежностями для програм, про які пишу, нічого не важливого. Сьогодні я закінчився такою структурою папок:введіть тут опис зображення

Спроба видалити будь-який файл зустрілася з цією помилкою:

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

Це було вже в C: \, тому значно коротше він не збирався.



чи маєте ви уявлення про те, як ваша структура папки отримала цю велику кількість, я зіткнувся з тією ж ситуацією при установці грунту.
eran otzer

1
@eranotzer, використовуючи npm.
Сейрія

я не робив залежності у ваших пакетах.json, де написано неправильно?
eran otzer

@eranotzer Так. Через те, як npm @ 2 працював, кожна залежність вклала свої залежності всередині себе. Це означало, що ланцюги залежностей можуть бути довільно довгими. npm @ 3 прагне скорегувати цю поведінку.
Сейрія

Відповіді:


75

Скористайтеся інструментом Microsoft robocopy.exe.

  1. Створіть нову порожню папку, наприклад c:\empty
  2. Потім скопіюйте цю порожню папку в папку, яка містить довгі імена файлів, які ви намагаєтесь видалити, наприклад c:\myannoyingfolder. Зробіть це так у командному рядку:

    робокопія / MIR c: \ порожній c: \ myannoying Folder


Оскільки це є частиною мого робочого процесу досить часто, я придумав, як інтегрувати його в оболонку Windows. Дивіться мою відповідь нижче. :)
toddmo

Примітка: ця команда може зайняти кілька секунд і навіть хвилин, щоб виконати. Тож, не хвилюйтеся, і дозвольте це зробити магію :-)
Аділ Малік

Дякую, працювали на мене. Я повинен був переконатися, що я також убив будь-який процес (IIS), який все ще тримався за один із файлів.
Slick Shinobi

Кожного разу, коли я намагаюся відкрити robocopy.exe, на секунду миготить вікно, і тоді нічого не відбувається. Будь ласка, допоможіть
Maulik Modi

29

Добре, скажімо, ви хочете видалити дерево D:\very\long\path, вам не обов’язково використовувати будь-які інструменти, такі як Robocopy.

  1. Перейдіть до кореневого каталогу диска, який містить каталог, який ви не можете видалити
  2. Створіть каталог із назвою однієї літери, наприклад D:\a
  3. У цьому випадку перейдіть до каталогу, який ви хочете видалити D:\very\long\path
  4. Виберіть усе ( Ctrl+ A) та виріжте ( Ctrl- X)
  5. Перейдіть до папки, яку ви тільки що створили
  6. Вставити ( Ctrl- V)
  7. Тепер перейдіть до кореневого каталогу та видаліть папку temp у цьому випадку D:\a
  8. Потім поверніться та видаліть початковий каталог

2
Це не спрацювало для мене з першої спроби для мене. Однак після повторення цієї процедури я міг все видалити.
abaldwin99

1
Прекрасне рішення, працювали бездоганно. Просто та ефективно, дякую!
Caner Öncü

ВЕЛИКО !! працює як шарм !!! ніяких інших інструментів не потрібно. Дякую!
Прасант KC

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

4

Я почав вводити цю проблему під час спроби безлічі команд, включаючи del /Fта rmdir /S(а також утримуючи зсув під час видалення, щоб спробувати обійти кошик). Я думаю, що rmdir /Sнасправді видалили всі файли, тому я зміг приступити до видалення папок, які були вузлами листя, а потім просунувши дерево на кілька вузлів одночасно. Врешті-решт я їх все очистив, але це було смішно.


4

Ви можете інтегрувати цю функціональність в оболонку Windows. Моє вдосконалення відповіді Фло було занадто довгим для коментаря.

Я додав Deleteкоманду до контекстного меню Windows.

введіть тут опис зображення

У delete.regфайл додаються записи реєстру, щоб пов’язати папки з robodelete.batпакетним файлом.

delete.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Delete]

[HKEY_CLASSES_ROOT\Directory\shell\Delete\command]
"Extended"=""
@="\"D:\\Documents\\robodelete.bat\" \"%1\""

robodelete.bat

mkdir c:\empty
robocopy /MIR c:\empty %1
rmdir %1
rmdir c:\empty

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

УВАГА : Немає способу скасувати цю команду. Він не використовує кошик і не просить Y / N підтвердити, перш ніж знищити папку назавжди!


Дякую за попередження Мені це потрібно і в моєму робочому процесі, але я хотів би уникнути наявності в меню правого клацання ядерної кнопки, яка не має підтвердження Y / N. Якщо я знайду час, я спробую зробити це коригування і запропоную змінити.
abaldwin99

1
@ Abaldwin99, як це може бути , stackoverflow.com/a/1807318/1045881
toddmo


3

Найкращий спосіб зробити це - скористатись роботокопією, я це задокументував у своєму особистому блозі, щоб ви слідували:

http://clintboessen.blogspot.com.au/2014/05/how-to-delete-files-which-exceed-255.html


4
Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться або зникне.
Андреа

0

У багатьох випадках буде працювати CD в каталог з командного рядка та використовувати DEL.

Якщо ні, то ви повинні працювати над своїм іменем. Вгору дерево каталогів: перейменуйте папку найнижчого рівня на коротше ім’я (наприклад, "a"), потім наступне вище ім'я папки тощо, поки загальний шлях не буде достатньо коротким. Працюючи знизу вгору, ви завжди маніпулюєте іменами, які мають коротший повний шлях, ніж кінцеві файли.


0
  • Відкрийте адміністративний командний рядок
  • net use z: c:\path
  • del z:\*.*

Налаштуйте відповідно. Z: - це лише умовна літера диска для відображення порушника. Ця остання команда видалення видалить каталог COLE, який ви накреслили - тому будьте більш конкретними, якщо потрібно.


2
Це дуже небезпечно для користувачів без харчування! Якщо це зробити неправильно, є можливість витерти диск.
Руді Стридом

Погоджено 100%. Однозначно поводьтесь обережно на цьому.
Бредлі Форні

0

Хороший спосіб - створити завантажувальний Linux на Pendrive та видалити файли без проблем з живого компакт-диска .


-1

У мене була та сама проблема, і я її виявив сам, просто перейменуйте батьківську папку як можна менше. Вих. Якщо наша папка в " D ", як D: // Folder / Undelete_Folder . Ви повинні зробити лише одне, що потрібно перейменувати назву батьківської папки настільки ж маленькою, як і можна перейменувати її на " а ". тоді ваше місцезнаходження буде D: // a / Undelete_folde r. а потім видаліть батьківську папку.


Мало того, що це не обов'язково працює (що, якщо він все-таки більший, навіть із зменшенням?), Але я прямо зазначив, що моя папка знаходиться в корені диска.
Сейрія

-2

Якщо все інше не вдається

Перейдіть до остаточного каталогу в рядку. Виріжте файли Вставте назад в 4-й або 5-й файл у рядку. Тоді [Shift] + [Delete] повинен зробити трюк.

Я скептично запускав вищезазначене в підвищеному командному рядку, коли я видаляв файл відновлення тесту з резервної копії DPM.

сподіваюся, що це допомагає.


Це, ймовірно, не буде працювати, оскільки вони все ще матимуть довгий шлях файлу для операції вирізання.
Сейрія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.