Вопрос Как удалить файл с слишком длинным пути для удаления [duplicate]


На этот вопрос уже есть ответ:

Я работал с некоторым исходным кодом компьютерного зрения, который я нашел, и не понимал, что он создает файл кеша, у которого есть ОЧЕНЬ длинное имя, и теперь я не могу удалить 2 из них.

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

В сообщении об ошибке говорится:

Путь назначения слишком длинный.

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

screenshot

Как я могу удалить файлы в этом случае?


192
2018-05-16 20:09


происхождения


Будет ли он работать из командной строки с помощью del команда? Что-то вроде del *.cache должен удалить все файлы .cache в текущем каталоге. - Ryan
«Путь \ to \ folder \ CACHEI ~ Системе не удалось найти указанный файл» сказал дважды, и там есть 2 файла, но ничего не сделал - Chris
С другой стороны, вы можете проверить один из других вопросов, на которые уже был дан ответ. Вот этот например. - Ryan
Если эти два файла являются единственными, оставленными в каталоге, то вам может удастся удалить весь каталог. В командной строке попробуйте rd /s directoryname  Это уничтожит directoryname и все файлы / подкаталоги внутри него, поэтому используйте его с осторожностью :) - bitsmack
youtube.com/watch?v=qQTyTprFAOg - bhv


ответы:


Предполагая, что вы находитесь в окнах:

То, что я всегда делаю, это использование subst создать буквенный буквенный указатель с частью пути.

Затем перейдите к новому расписанию и перейдите к файлам с длинными именами. Теперь вы должны иметь возможность переименовывать / удалять / и т. Д. Причина этого в том, что сам путь больше не содержит> 255 символов.

Чтобы создать папку подкаталога

  1. Начать commandprompt (не требуется никаких привилегий администратора)
  2. использование cd для перехода к папке, в которую вы хотите перейти (вы можете использовать табуляция для автозаполнения имен
  3. тип subst j: . для создания ассоциации дисков. (вместо этого вы также можете ввести весь путь)
  4. Теперь у исследователя есть новое письмо. Перейдите к нему и сделайте все, что вам нужно сделать, чтобы файлы .cache.
  5. Вернитесь в свое окно cmd и введите subst /d j: для удаления диска или, альтернативно, перезагрузите компьютер.

EDIT: Трюк, который я узнал, который может немного сократить это. В окне проводника, где у вас возникли проблемы, нажмите на адресную панель, чтобы ввести ее, затем введите cmd и нажмите Войти для запуска командной строки в этом месте, затем перейдите к шагу 3. :)

EDIT2: Хорошо, этот трюк можно расширить еще дальше. Если вы находитесь в проводнике по правильному пути, просто введите subst j: . в адресной строке и нажмите enter. Появится окно команды, запустите команду и закройте ее снова, и там вы перейдете в новый проводник.


341
2018-05-16 20:20



robocopy empty_dir base_nested_dir / purge - просто создайте пустой каталог и скажите robocopy, чтобы очистить все в целевом каталоге, который не находится в пустом каталоге stackoverflow.com/a/3320317/588759 - rofrol
Просто попробовал это, и я не смог удалить файл, о котором идет речь. Я использую cygwin с окнами, альтернативным решением является удаление файла таким образом: rm -R / path / in / question, если никакая другая программа не использует файл ты хочешь пойти - John
У меня была проблема, когда SUBST не распознал J: как параметр (он также не видел никаких виртуальных дисков, которые были доступны), поэтому опция cygwin, упомянутая Джоном, работала хорошо. - Tisch
@rofrol, вы должны сделать свой комментарий robocopy: это намного проще, чем использовать подход к именам каталогов при работе с большим количеством дочерних каталогов (например, созданных в node_modules) - Andy Brown
Решение Джона работало очень хорошо для меня, просто добавил -f (параметр силы): rm -R -f / pathToDelete - Christophe Keller


В заданном вопросе возникает вопрос, как удалить файл, если имя файла слишком длинное. Если путь слишком длинный, а не только имя файла, вы можете просто переименовать папки, чтобы сделать путь короче.

Но для удаления файла с именем более 255 символов:

  • Откройте командную строку, запустив «CMD.EXE»
  • Перейдите в папку, в которой находится файл.
  • Используйте команду DIR / X, которая будет отображать короткие имена файлов.
  • Удалите с помощью короткого имени.

то есть, если файл имеет имя «verylongfilename.fil», короткое имя будет отображаться как «verylo ~ 1.fil», и вы можете удалить его с помощью этого имени.

Обратите внимание, что хотя сама Windows может обрабатывать пути длиной более 255 символов, большая часть графического интерфейса, такого как проводник Windows, связана более коротким пределом.


64
2018-05-17 06:31



Это лучший ответ, чем принятый. - Ben
Выбранный ответ лучше, потому что вы можете удалить целые папки с помощью этого метода - mcont
но в Windows 7 кажется, что DIR / x вообще не меняет какой-либо дисплей ... :( - gumuruh
Некоторые файловые системы NTFS не имеют 8.3 эквивалентов. Так что это не всегда работает. - Ross Presser
Del / S от CMD работал для меня даже с большим именем на 8. - Jeff


Googled: удалить длинное имя файла Первый результат

Использовать Unlocker http://www.filehippo.com/download_unlocker/

Не удается удалить папку: она используется другим человеком или программой   Не удается удалить файл: доступ запрещен. Был обмен   нарушение. Возможно, используется исходный или целевой файл. Файл   в использовании другой программой или пользователем. Убедитесь, что диск не заполнен или   write-protected и что файл в настоящее время не используется.

Unlocker может помочь! Просто щелкните правой кнопкой мыши папку или файл и выберите   Unlocker. Если папка или файл заблокированы, список окон шкафчиков   будет появляться. Просто нажмите «Разблокировать все», и все готово!


4
2018-05-16 20:18



Я видел это, но не знал, безопасно ли использовать блокировщик, поэтому я проигнорировал его, я попробую. EDIT: не работает. он работает с другими файлами, но разблокировка не появляется в раскрывающемся списке - Chris
Конечно, это самый простой способ сделать это, хотя для его завершения может потребоваться перезагрузка. Ничего плохого в Unlocker совсем не было - он использовал его в течение многих лет, и это очень полезная утилита. В случае файла или папки, чей путь слишком длинный, он не найдет блокирующий дескриптор, но затем должен предлагать параметр «Удалить» в раскрывающемся списке. - Steve Pettifer
Работала безупречно - смешно, что у меня установлено это программное обеспечение, но мне не пришло в голову использовать его в этой ситуации. - Daniel Sokolowski
Не работал в другой папке, где я скопировал папку с круговым соединением, но что работа переименовала каждую папку уровня в один символ, например 1 и удалив его. - Daniel Sokolowski
Это был единственный ответ, который работал для меня (я использую окна 10). Большое спасибо! - user26832


У Microsoft есть полезная статья базы знаний об удалении восстанавливаемых файлов, Причина № 4 имеет отношение к вам.

Лучше всего было бы отобразить диск в папку, в которой находится файл (разрешение # 3), а затем войти через этот диск и удалить его.


2
2018-05-16 20:18



Я никогда не понимал, что могу «сопоставить сетевой диск» с местом на моем собственном жестком диске. Это то, что я сделал в Windows Explorer. После перехода на диск я мог легко удалить папку и содержимое. Тот же принцип, что и консольные решения, показанные выше, но это быстрое графическое решение, которое было для меня легче. - RandomHandle