Cómo eliminar un archivo con una ruta demasiado larga para eliminarlo [duplicar]

203

Estaba trabajando con un código fuente de visión por computadora que encontré y no me di cuenta de que crea un archivo de caché que tiene un nombre MUY LARGO y ahora no puedo eliminar los 2.

Traté de cambiarle el nombre a un nombre más corto, pero no puedo hacer nada al archivo, también intenté reiniciar mi computadora y ver si simplemente desaparece.

El mensaje de error dice:

Ruta de destino demasiado larga.

Los nombres de archivo serían demasiado largos para la carpeta de destino. Puede acortar el nombre del archivo e intentarlo nuevamente, o probar una ubicación que tenga una ruta más corta.

captura de pantalla

¿Cómo puedo eliminar los archivos en este caso?

Chris
fuente
¿Funcionaría desde la línea de comando con el delcomando? Algo del *.cachesimilar debería eliminar todos los archivos .cache del directorio actual.
Ryan
"Ruta \ a \ carpeta \ CACHEI ~ El sistema no pudo encontrar el archivo especificado" dijo eso dos veces y hay 2 archivos allí, pero no hizo nada
Chris
Pensándolo bien, puede verificar una de las otras preguntas que ya ha sido respondida. Este por ejemplo.
Ryan
1
Si estos dos archivos son los únicos que quedan en el directorio, es posible que tenga más suerte eliminando todo el directorio. Desde el símbolo del sistema, intente rd /s directoryname Esto eliminará directorynamey todos los archivos / subdirectorios dentro de él, así que
úselo

Respuestas:

353

Asumiendo que estás en Windows:

Lo que siempre hago es usar subst para crear una asociación de letra de unidad con parte de la ruta.

Luego vaya a la nueva letra de unidad y navegue a los archivos que tienen nombres largos. Ahora debería poder cambiarles el nombre / eliminarlos, etc. La razón por la que esto funciona es porque la ruta en sí ya no contiene más de 255 caracteres.

Para crear una carpeta subst

  1. Inicie un símbolo del sistema (no se necesitan privilegios de administrador)
  2. Use cdpara navegar a la carpeta que desea ir (puede usar tabpara autocompletar nombres
  3. escriba subst j: .para crear la asociación de driveletter. (en lugar de. También puede escribir la ruta completa)
  4. Ahora en Explorer, tiene una nueva letra de unidad en esta PC . Ve a él y haz lo que necesites hacer con los archivos .cache.
  5. Regrese a su ventana de cmd y escriba subst /d j:para quitar la unidad o, alternativamente, reinicie su PC.

EDITAR: Un truco que aprendí que puede acortar esto bastante. Desde la ventana del Explorador donde tiene problemas, haga clic en la barra de direcciones para poder escribirla, luego escriba cmdy presione Enterpara iniciar un símbolo del sistema en esa ubicación, luego continúe en el paso 3. :)

EDIT2: Bien, este truco se puede ampliar aún más. Si está en el explorador en la ruta correcta, simplemente escriba subst j: .en la barra de direcciones y presione Entrar. Aparecerá una ventana de comandos, ejecute el comando y vuelva a cerrar, y allí está, aparece una nueva unidad en el explorador.

LPChip
fuente
26
robocopy empty_dir base_nested_dir / purge - Simplemente cree un directorio vacío y dígale a robocopy que purgue todo el directorio de destino que no está en el directorio vacío stackoverflow.com/a/3320317/588759
rofrol
77
Acabo de intentar esto y no pude eliminar el archivo en cuestión. Uso cygwin con Windows, una solución alternativa es eliminar el archivo de esa manera: rm -R / path / in / question siempre que ningún otro programa esté usando el archivo estás listo para ir
John
1
Tuve un problema en el que SUBST no reconocía J: como un parámetro (tampoco veía unidades virtuales disponibles), por lo que la opción cygwin mencionada por John funcionó bien.
Tisch
1
@rofrol, debe hacer que su comentario de robocopy sea una respuesta: es mucho más fácil que hacer el enfoque de nombres de directorio cuando se trata con muchos directorios secundarios (como los creados en node_modules)
Andy Brown
1
La solución de John funcionó muy bien para mí, solo agregó el -f (parámetro de fuerza): rm -R -f / pathToDelete
Christophe Keller
66

Su pregunta pregunta cómo eliminar un archivo cuando el nombre del archivo es demasiado largo. Si la ruta es demasiado larga y no solo el nombre del archivo en sí, puede cambiar fácilmente el nombre de las carpetas para acortar la ruta.

Pero para eliminar un archivo cuyo nombre tiene más de 255 caracteres:

  • Abra un símbolo del sistema ejecutando "CMD.EXE"
  • Navega a la carpeta que contiene el archivo
  • Use el comando DIR / X que mostrará los nombres cortos de los archivos.
  • Eliminar usando el nombre corto.

es decir, si el archivo se llama "verylongfilename.fil", el nombre corto se mostrará como "verylo ~ 1.fil" y puede eliminarlo con ese nombre.

Tenga en cuenta que aunque Windows mismo puede manejar rutas de más de 255 caracteres, la mayor parte de la GUI, como el Explorador de Windows, está limitada por un límite más corto.

Debra
fuente
16
Esta es una mejor respuesta que la aceptada.
Ben
3
La respuesta elegida es mejor porque puede eliminar carpetas enteras con ese método
mcont
2
pero en Windows 7 parece que DIR / x no cambia ninguna pantalla aquí ... :(
gumuruh
3
Algunos sistemas de archivos NTFS NO tienen 8.3 equivalentes. Entonces esto ya no siempre funciona.
Ross Presser
Del / S de CMD funcionó para mí incluso con un nombre grande el 8.
Jeff
5

Busca en Google: eliminar el nombre de archivo largo Primer resultado

Utilice Unlocker http://www.filehippo.com/download_unlocker/

No se puede eliminar la carpeta: está siendo utilizada por otra persona o programa. No se puede eliminar el archivo: acceso denegado. Se ha producido una infracción de uso compartido. El archivo de origen o de destino puede estar en uso. El archivo está en uso por otro programa o usuario. Asegúrese de que el disco no esté lleno o protegido contra escritura y que el archivo no esté actualmente en uso.

Unlocker puede ayudar! Simplemente haga clic derecho en la carpeta o archivo y seleccione Desbloqueador. Si la carpeta o el archivo está bloqueado, aparecerá una lista de ventanas de los casilleros. ¡Simplemente haga clic en Desbloquear todo y listo!

Wutnaut
fuente
1
Lo vi pero no sabía si el desbloqueo era seguro de usar, así que lo ignoré, lo probaré. EDITAR: no funcionó. funciona en otros archivos pero el desbloqueador no aparece en el menú desplegable
Chris
Ciertamente, la forma más sencilla de hacerlo, aunque puede necesitar un reinicio para completar. No hay nada malo con Unlocker: lo he estado usando durante años y es una utilidad muy útil. En el caso de un archivo o carpeta cuya ruta es demasiado larga, no encontrará un controlador de bloqueo, pero debería ofrecer la opción Eliminar en el menú desplegable posterior.
Steve Pettifer
1
Funcionó a la perfección: lo curioso es que tengo este software instalado pero no se me ocurrió usarlo en esta situación.
Daniel Sokolowski
No funcionó para otra carpeta donde copié una carpeta de unión circular, pero lo que funcionó fue cambiar el nombre de cada carpeta de nivel a un carácter como 1todo el camino y luego eliminarlo.
Daniel Sokolowski
Esta fue la única respuesta que funcionó para mí (estoy usando Windows 10). ¡Muchas gracias!
user26832
4

Microsoft tiene un útil artículo de base de conocimiento sobre la eliminación de archivos no recuperables . Causa # 4 es relevante para usted.

Su mejor opción probablemente sería asignar una unidad a la carpeta en la que se encuentra el archivo (resolución n. ° 3), luego ingresar a través de esa unidad y eliminarla.

Compro01
fuente
1
Nunca antes me había dado cuenta de que podía "asignar una unidad de red" a una ubicación en mi propio disco duro. Eso es lo que hice en el Explorador de Windows. Después de navegar a la unidad, podría eliminar fácilmente la carpeta y el contenido. El mismo principio que las soluciones de consola que se muestran arriba, pero esta es una solución GUI rápida que fue más fácil para mí.
RandomHandle