60

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

Попытка удалить любой файл встретилась с этой ошибкой:

Имя файла (ов) источника больше, чем поддерживается файловой системой. Попробуйте переместиться в местоположение с более коротким именем пути или попробуйте переименовать в более короткое имя (имена), прежде чем пытаться выполнить эту операцию.

Он был уже в C:\, поэтому он не станет намного короче.

11 ответов11

75

Используйте инструмент Microsoft robocopy.exe .

  1. Создайте новую пустую папку, например, c:\empty
  2. Затем скопируйте эту пустую папку в папку, содержащую длинные имена файлов, которые вы пытаетесь удалить, например, c:\myannoyingfolder . Сделайте это так в командной строке:

    robocopy /MIR c:\empty c:\myannoyingfolder

28

Хорошо, допустим, вы хотите удалить дерево D:\very\long\path , вам не обязательно использовать какие-либо инструменты, такие как Robocopy.

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

Средство командной строки SuperDelete с открытым исходным кодом (GitHub) работало для меня после сбоя других опций (Windows 10).

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 для подтверждения перед уничтожением папки навсегда!

4

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

3

Лучший способ сделать это - использовать robocopy, я задокументировал это в своем личном блоге, чтобы вы могли следить за ним:

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

0

Хороший способ - установить загрузочный Linux на pendrive и без проблем удалять файлы с live CD .

0

Во многих случаях, CDing в каталог из командной строки и с помощью DEL будет работать.

Если нет, вы должны обработать свое имя ВВЕРХ в дереве каталогов: переименуйте папку самого низкого уровня в более короткое имя (например, "a"), затем в следующее более высокое имя папки и так далее, пока общий путь не станет достаточно коротким. Работая снизу вверх, вы всегда манипулируете именами, у которых полный путь короче, чем у конечных файлов.

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

Твик соответственно. Z: это просто произвольная буква диска для сопоставления пути с ошибкой. Эта последняя команда удаления сотрет ВСЕ каталог, который вы отобразили - так что будьте более конкретны по мере необходимости.

-1

У меня была та же проблема, и я нашел ее сам. Просто переименуйте родительскую папку как можно меньше. Ex. Если наша папка в " D " диск как D:// Папка / Undelete_Folder. Единственное, что вам нужно сделать, это переименовать имя родительской папки так, чтобы вы могли переименовать его в « а ». тогда ваше местоположение будет D:// a / Undelete_folde r. а затем удалите родительскую папку.

-2

Если все остальное терпит неудачу

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

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

надеюсь это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .