Esta pregunta ya tiene una respuesta aquí:
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?
CTRL
+DELETE
es el método más fácil en mi opinión ...Respuestas:
Cuando desea eliminar por completo un directorio y contiene rutas largas,
robocopy
hace un muy buen trabajo: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.
fuente
Desde un símbolo del sistema:
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:
fuente
dir
nicd ..
.dir
usarpushd
en su lugar. Eso funcionó para mí.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.
fuente
mv * 1 && cd 1
. Esto no funcionó cuando había varios archivos en el directorio, pero en ese momentorm -rf *
usualmente funcionaba.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:fuente
rm -rf \\directoryname
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
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.
fuente
subst x: C:\Some\first\part\of\the\long\path
y luego eliminar el disco consubst x: /d
subst
truco 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.net use
, puede usar losnet use x: \\localhost\c$\bar\folders /persistent:no
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)
fuente
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.
fuente
node_modules
carpetas 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.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!
fuente