¿Cómo eliminar un archivo en Windows con un nombre de archivo demasiado largo? [duplicar]


202

Mi esposa tiene varios archivos y carpetas que de alguna manera terminaron teniendo nombres de archivos que los han hecho que no se pueden eliminar (no se pueden eliminar) por medios normales o a través de la línea de comandos. Creo que los nombres de archivo son demasiado largos debido a la profundidad de las estructuras de carpetas. ¿Alguien sabe de una buena utilidad para limpiar archivos como este?


¿Cómo se crearon estos archivos?
Nick

Perdón por mi ignorancia sobre este tema, pero ¿no debería Windows manejar estos archivos? ¿No debería Windows hacer lo que Eddins publicó automáticamente (incluso desde el explorador)?
Stefanos Kalantzis

2
@ Mokubai- La pregunta duplicada debe marcarse como duplicada de esta, ya que esta pregunta es más antigua .
AStopher

1
@cybermonkey: Y tiene una mejor respuesta.
Ellesedil

Para otros lectores, el Método 7zip con CTRL+DELETE es el método más fácil en mi opinión ...
Christian Gollhardt

Respuestas:


426

Cuando desea eliminar por completo un directorio y contiene rutas largas, robocopyhace un muy buen trabajo:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

Esto funciona porque robocopy utiliza\\?\ internamente las versiones compatibles con Unicode de las funciones de Win32, con el prefijo para las rutas de archivo ; esas funciones tienen un límite de 2¹⁶-1 (32,767) caracteres en lugar de 259.

Puede que tenga que pasar por este proceso más de una vez para deshacerse de todos los archivos.


1
Eficiente cuando no hay un nombre corto (8.3) almacenado en el sistema de archivos.
Antoine RODRIGUEZ

1
Esto funcionó muy bien con mis testarudos archivos de caché de la Tienda Windows que se negaron a ser eliminados. ¡Gracias!
Samir

1
Tuve que agregar / purgar a la línea de robocopy para que esto funcione, pero funcionó después de eso
actionshrimp

3
Robocopy es lo que me metió en este lío, pero nunca se me ocurrió usar Robocopy para sacarme de él. ¡Gran respuesta! ¡Gracias!
Jay Michaud

2
@SarahofGaia, mi mal, es 2¹⁶ - 1 en realidad
Benoit

91

Desde un símbolo del sistema:

dir /X

Esto mostrará una lista de sus archivos / carpetas en formato de nombre corto. Luego use el nombre corto exactamente como está escrito para eliminar el archivo:

del LONGF~1.txt

1
Me gusta, es un buen pensamiento lateral.
Col

Si bien no puedo garantizar que funcione en este caso, lo he usado varias veces para eliminar carpetas que tienen caracteres no válidos al final que las hacen imposibles de eliminar por medios normales.
Will Eddins

1
Esto funciona para archivos y carpetas en el directorio actual, pero si de alguna manera logras encontrarte dentro de una carpeta cuya ruta es demasiado larga, no ayudará. Por ejemplo, actualmente estoy en una consola en un camino demasiado largo y no puedo dirni cd ...
Bobson el

1
@Bobson Si no puedes dirusar pushden su lugar. Eso funcionó para mí.
BadHorsie

44
Esto no funciona con Windows 10, el nombre del archivo que se muestra es el largo
Loenix

53

Avanzo progresivamente hacia la ruta, cambiando el nombre de cada carpeta principal sucesiva a "1" e intentando eliminarla. Estás acortando efectivamente la ruta cada vez y nunca he tenido que trabajar en más de 4 o 5 directorios hasta que finalmente pueda eliminar toda la estructura del directorio (que puede o no ser lo que deseas). También puede hacerlo desde la última carpeta secundaria y avanzar o retroceder.


77
Esto fue lo único que funcionó para mí. Todos los otros trucos dados aquí y en otros foros como este no funcionaron.
Andrew Arnott

Fue la única sugerencia que funcionó de manera bastante extraña.
Nestor Ledon

Esto funcionó para mí, un atajo que me ayudó fue mv * 1 && cd 1. Esto no funcionó cuando había varios archivos en el directorio, pero en ese momento rm -rf *usualmente funcionaba.
Alexander Varwijk

1
No se puede hacer esto en Windows 10 ... cambiar el nombre arroja "nombre de archivo a error largo"
Dawesi

3
Esto no solo solucionó el problema para mí, sino que también explica cómo terminé con el problema en primer lugar. Debo haber tenido una ruta que estaba cerca del límite, luego cambié el nombre de una carpeta principal (agregué algo como "guardar noviembre de 2016 guardar" al nombre) que empujó los archivos en subcarpetas por encima del límite. Es bueno saber la causa y la solución, aunque sé que también puede suceder de otras maneras, creo que esta es una forma común que le sucede a la gente.
Eselk

13

En algunos programas, incluido el símbolo del sistema ( cmd.exe), puede sortear el límite de longitud del archivo con el prefijo de la ruta completa de \\.\esta manera:

\\. \ C: \ algún directorio \ otro directorio \ un archivo con nombre largo

3
no funciona en Windows 10
Dawesi

gracias, cmd trabajó de maravilla con esto en Win7rm -rf \\directoryname
Philip Pryde

13

Un truco que he usado para sortear la limitación de longitud de "ruta completa y nombre de archivo" para mover, copiar o eliminar algo es acortarlo 'entrando' a la mitad (o más) usando una letra de unidad asignada que apunta a una carpeta camino por el camino .

entonces tienes c: \ some \ long \ path ... \ and \ foo \ bar \ carpetas \ oldfiles \ myoldfile.txt.

Luego, asigne una letra de unidad arbitraria a algún lugar a lo largo del camino para que el primer fragmento del camino tenga solo unos pocos caracteres. Requisito previo: la carpeta debe estar en una carpeta compartida (que ya puede estar si está en un servidor, que es donde he necesitado hacer esto), y si aún no está, elija una carpeta en algún lugar de la ruta y compártelo Dependiendo de su entorno y nivel de paranoia, permita que todos modifiquen el acceso al recurso compartido siempre que los permisos NTFS sean razonablemente restrictivos. Si lo desea, solo permita modificar los derechos solo a su propia cuenta.

Ahora vaya a la carpeta compartida o una dentro de ella y compártala, o use la línea de comando de la siguiente manera. Supongamos que compartió la carpeta "foo" como "fooshare", entonces podría hacer

net use x: \\mycomputername\fooshare\bar\folders /persistent:no

y la unidad X: ahora apunta directamente a la carpeta "carpetas" dentro de ese recurso compartido, por lo que "x: \ oldfiles \ myoldfile.txt" ahora es bastante corto.

(El "/ persistente: no" significa que esto no sobrevivirá al próximo reinicio y lo confundirá más adelante. No olvide des-compartir su carpeta cuando haya terminado).

Recuerde, no tiene que compartir la carpeta que contiene el archivo necesariamente, si ya está dentro de una carpeta compartida, puede asignarla a través del recurso compartido y las carpetas anidadas a una carpeta de destino cerca del archivo y eso funciona bien.

Tuve que usar esta técnica haciendo una robocopia masiva entre dos servidores cuando nos dimos cuenta de que los usuarios habían asignado unidades de disco bastante profundas en la estructura de carpetas, por lo que habían podido usar 255 caracteres desde allí, pero eso excedió la longitud total de la ruta del archivo cuando se accede desde la raíz de la unidad local.


44
puede evitar compartir usando subst x: C:\Some\first\part\of\the\long\pathy luego eliminar el disco consubst x: /d
mihi

1
Buen intento, pero cuando tienes 10 de k de carpetas anidadas, no es posible.
Julian Knight

El substtruco parece funcionar bien, siempre y cuando el nombre de archivo no sea tan largo como para que supere los 260 caracteres incluso en la raíz de una unidad.
Stephen Chung

Tampoco necesita compartir explícitamente ninguna carpeta net use, puede usar los net use x: \\localhost\c$\bar\folders /persistent:no
recursos

9

La forma más simple que he encontrado es arrancar desde un CD en vivo de ubuntu.

Como alternativa, puede crear una carpeta compartida a mitad de camino y luego asignar una unidad de red a esa carpeta y eliminarla de la carpeta asignada (incluso en la misma máquina)


17
Es curioso con qué frecuencia un CD de Ubuntu Live ayudará a solucionar problemas de Windows ^^
Ivo Flipse

1
Me he dado cuenta de que a mí mismo, la red poco fiable tratar un CD en vivo, tema del sistema de ficheros tratar un CD en vivo, la tabla de particiones corruptos, etc, etc :-)
Col

Esta es la única solución que funcionó para mí. ¡Te amo, Linux! <3
David Frye

1
Ejecute bash desde windows No se requiere Linux. ;-) Además, si está ejecutando Windows 10, simplemente instale "Windows Subsystem for Linux", básicamente Windows usa los enlaces de api de ubuntu para hacer el trabajo ... utilidades que incluyen "apt, ssh, rsync, find, grep, awk, sed, sort, xargs, md5sum, gpg, curl, wget, apache, mysql, python, perl, ruby, php, gcc, tar, vim, emacs, diff, patch, y la mayoría de las decenas de miles de paquetes binarios en los archivos de Ubuntu. "Este es un ambiente muy pleno desarrollo de Linux que sólo pasa a ser ejecuta en Windows. zdnet.com/article/ubuntu-and-bash-arrive-on-windows-10
Dawesi

cygwin es otra alternativa para ejecutar comandos LINUX en windows
atom88

5

Cambie el nombre del directorio de cortar / pegar el archivo en otro lugar, luego bórrelo. Trabaja aqui

O simplemente desde el símbolo del sistema, si no tiene ganas de pasar por el problema.


Esto funciona como un encanto. Excave allí (para mí, eran node_modulescarpetas super-anidadas ), arrástrelo a su escritorio y elimínelo. Enjuague y repita a medida que sube algunas carpetas a la vez. Qué problema tan desagradable.
nickb

77
Esto no funcionó para mí, la operación de pegar falló debido al nombre de archivo largo, no importa dónde lo corte.
UpTheCreek

1

Probablemente no sea la mejor manera y estoy interesado en ver qué piensan los demás.

Tuve esto una vez y probé algunas cosas sin suerte. En lugar de buscar una buena herramienta, reinicié con el disco de Windows, fui a la consola de recuperación y simplemente lo eliminé desde allí. ¡Trabajó por primera vez y realmente bien!

Además, acabo de hacer un Google para usted y encontré esto: DelinvFile se ve bien pero no puede responder por ello.

Editar - Advertencia, lo que acabo de ver es solo una prueba. ¡Quizás no sea tan bueno como pensé al principio!


El rimraf gratuito funciona bien y funciona cuando todas las otras ideas fallaron. Requiere node.js
Julian Knight
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.