2013-01-17 15:33:22 +0000 2013-01-17 15:33:22 +0000
59
59
Advertisement

Borrar completamente una carpeta en Windows usando la línea de comandos

Advertisement

Necesito borrar una carpeta que contiene otras carpetas y archivos dentro. Intenté los comandos del y rmdir pero a veces fallan con algunas líneas de error: [PATH]: The directory isn't empty.

¿Hay alguna buena alternativa?

Advertisement
Advertisement

Respuestas (8)

58
58
58
2013-01-17 15:38:19 +0000

Intente:

rmdir /S your_directory

o:

rmdir /S /Q your_directory

para saltar los mensajes de confirmación.

16
16
16
2013-07-16 16:23:26 +0000

Esto me pasa mucho con mis scripts de construcción automatizada.

Supongo que la razón podría ser alguna aplicación que tiene un archivo abierto en ese directorio con “share delete”. Es decir, la aplicación permite la eliminación del archivo (por lo que me imagino que la llamada DeleteFile no falla), pero el archivo sólo desaparecerá después de que dicha aplicación haya cerrado su “handle”.

Eso significa que el archivo podría seguir estando ahí cuando el comando rmdir intente eliminar la carpeta, de ahí el mensaje de error. Poco después, dicha aplicación cerrará su “handle”, el archivo desaparecerá, y cuando inspeccione la carpeta para ver de qué archivo rmdir estaba hablando, estará vacía.

Al menos esa es mi teoría.

La solución propuesta por Harry Johnston se ve bien. Sólo que yo insertaría una pausa entre los comandos rmdir. Por supuesto que Windows no tiene un comando de “pausa” fácilmente programable (corrección: las antiguas versiones de Windows no lo tienen, las más recientes sí - ver comentarios). Pero si la granularidad de los segundos es suficiente, se puede usar ping para crear una pausa:

ping -n {desired_delay_in_seconds + 1} 127.0.0.1 >nul

Así que en total:

rd /s /q foo
:: retry once
if exist foo (
    :: clear errorlevel
    cmd /c
    :: pause
    ping -n 2 127.0.0.1 >nul
    :: retry
    rd /s /q foo
)
:: retry yet again
if exist foo (
    cmd /c
    ping -n 2 127.0.0.1 >nul
    rd /s /q foo
)
:: give up
if exist foo {panic}
11
Advertisement
11
11
2013-01-17 16:27:07 +0000
Advertisement

Puede tener algunos archivos de sólo lectura, puede usar la opción del /F para deshacerse de ellos usando

del /S /F your_directory
     rmdir your_directory

También puede tener algunos archivos ocultos y si está realmente seguro de que quiere eliminarlos, puede hacerlo usando

del /S /F /AH your_directory
     rmdir your_directory

Si esto sigue fallando, entonces o bien no tiene permiso para eliminar algunos archivos, o algunos de los archivos siguen en uso.

5
5
5
2013-01-17 22:34:36 +0000

Creo que hay un error en Windows 7 (y tal vez en otras versiones) que a veces causa este síntoma; o podría ser un error en el software de terceros. (¿Por casualidad tiene instalado Symantec Endpoint Protection?)

De todos modos, me lo he encontrado bastante a menudo. En la mayoría de los casos, el problema puede solucionarse ejecutando rd /s /q dos o tres veces seguidas.

Si esto está en un archivo por lotes, puede hacer algo como esto:

rd /s /q foo
if exist foo rd /s /q foo
if exist foo rd /s /q foo
if exist foo echo Help! & pause
3
Advertisement
3
3
2013-01-17 15:36:33 +0000
Advertisement

Use del en los archivos que están dentro, luego rmdir para eliminar la carpeta.

Para usar el método rmdir para eliminar también todos los archivos, use el interruptor /S antes del nombre del directorio, y /Q para suprimir la solicitud de eliminación. Esta es la mejor manera de hacerlo, ya que no se pierde ningún archivo. Sin embargo, tenga cuidado al usar el interruptor /Q, ya que no le advertirá de los atributos de System o Hidden file

2
2
2
2017-12-01 18:08:45 +0000

Si usas nodo puedes usar la dependencia rimraf de esta manera:

run install: npm install rimraf -g

delete folder: rimraf SourceFolder

Esto me ayudó cuando obtuve el error:

los nombres de los archivos fuente son más grandes que los que soporta el sistema de archivos

0
Advertisement
0
0
2015-11-16 14:47:29 +0000
Advertisement

Creo que puedes usarlo así:

msg*your file is going to delete 
pause
del/s /q "C:\Users\Rd\Desktop\New folder (2)\" 
rmdir /s /q "C:\Users\Rd\Desktop\New folder (2)\"
mkdir "C:\Users\Rd\Desktop\New folder (2)"
0
0
0
2016-06-24 18:30:12 +0000

Carpeta las versiones más antiguas de Windows (DOS, Windows 95/98/ME), DELTREE es el equivalente a RM o RMDIR. Yo uso DELTREE en mi estación de trabajo de Windows 7 en archivos por lotes.

Deletes a directory and all the subdirectories and files in it.

To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]

  /Y Suppresses prompting to confirm you want to delete
                  the subdirectory.
  [drive:]path Specifies the name of the directory you want to delete.

Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.
Advertisement

Preguntas relacionadas

3
19
10
28
5
Advertisement