Pregunta

En versiones anteriores de MS-DOS, quiero decir que la versión 7, pero podría estar equivocado, había un comando deltree , que borraba recursivamente todos los subdirectorios y archivos de una ruta determinada.

deltree ya no existe, pero del no parece heredar la capacidad de eliminar un árbol. del / s elimina archivos, pero no carpetas.

¿Cómo eliminar fácilmente (es decir, en un comando) un árbol de un archivo por lotes?

¿Fue útil?

Solución

Como otros han mencionado, el comando rd tiene el interruptor / s para eliminar recursivamente los subdirectorios. Puede combinarlo con el conmutador / q para eliminar por la fuerza un subdirectorio (y su contenido) sin solicitarlo

rd /s /q c:\foobar

Lo que falta a todos es que rd es no un reemplazo exacto para deltree como aparentemente (almost ) cada página devuelta por Google para windows deltree te haría creer. El comando deltree funcionó tanto para los directorios como para los archivos , por lo que es un comando de eliminación conveniente y universal. Es válido lo siguiente:

deltree /y c:\foobar
deltree /y c:\baz.txt

Sin embargo, rd (no es sorprendente) solo funciona para directorios . Como tal, solo el primero de estos comandos es válido, mientras que el segundo da un error y deja el archivo sin eliminar:

rd /s /q c:\foobar
rd /s /q c:\baz.txt

Además, el comando del solo funciona para archivos, no directorios, por lo que solo el segundo comando es válido mientras que el primero da un error:

del /f /q c:\foobar
del /f /q c:\baz.txt

No hay una forma integrada de eliminar archivos y directorios como se podría hacer con deltree . Usar rd y del individualmente es inconveniente en el mejor de los casos porque requiere distinguir si un objeto del sistema de archivos (nombre de archivo / carpeta) es un archivo o directorio que no siempre es posible o práctico.

Puede copiar el comando deltree de un sistema operativo anterior, sin embargo, solo funcionará en versiones de 32 bits de Windows, ya que es un comando DOS de 16 bits (incluso en Windows 9x).

Otra opción es crear un archivo por lotes que llame a del y rd ; algo como esto:

::deltree.bat

@echo off
rd  %* 2> nul
del %* 2> nul

Lo llamarías así:

deltree.bat /s /q /f c:\foobar
deltree.bat /s /q /f c:\baz.txt

Esto llama a rd y del , pasando los argumentos y redirigiendo la salida a nul para evitar el error de que uno de ellos emitir invariablemente.

Probablemente desee personalizar el comportamiento para acomodar o simplificar parámetros o permitir mensajes de error, pero aun así, no es ideal y no es un reemplazo directo para deltree .

Una alternativa es obtener una herramienta de terceros, aunque encontrar una es un ejercicio real en la búsqueda, consulta y elaboración.

Otros consejos

Fue reemplazado con los comandos: RMDIR o RD

Eliminar todos los subdirectorios con / S

Úselo en silencio con el / Q

Ejemplo:

RMDIR /S /Q Folder2Delete
RD /S /Q Folder2Delete

Documentación:

Sintiendo nostalgia, escribí mi propio deltree.exe. Funciona con directorios y archivos, y utiliza SHFileOperation () para la velocidad.

https://github.com/ai7/toolbox/tree/master/deltree

deltree v1.01 [Mar 27 2015, 16:31:02] (gcc 4.9.1)

Usage: deltree [options] <path> ...

Options:
  -y    yes, suppresses prompting for confirmation
  -s    silent, do not display any progress dialog
  -n    do nothing, simulate the operation
  -f    force, no prompting/silent (for rm compatibility)
  -r    ignored (for rm compatibility)

Delete directories and all the subdirectories and files in it.

Toma comodines y puede usarlo como unix rm:

deltree -rf *
rmdir /s /q directory
$ help rd
Removes (deletes) a directory.

RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path

    /S      Removes all directories and files in the specified directory
            in addition to the directory itself.  Used to remove a directory
            tree.

    /Q      Quiet mode, do not ask if ok to remove a directory tree with /S

Hoy en día, puede usar Powershell para hacer la misma tarea:

powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force"

En realidad, los comandos RMDIR y RD en el sistema operativo Windows moderno combinan los comandos RD y Deltree de Win 98 en un solo comando. Es un comando interno por eso no encontrará ningún RD.exe ni RMDIR.exe.

Al escribir esto " RD /? " en cmd sin doble qoutes obtendrá exactamente lo que desea.

para eliminar un directorio y todo su contenido de forma recursiva

rd /s MY_DOOMED_DIR

Use esto:

cd (your directory here)
del *.* /f /s /q

Eliminar todos los archivos y subdirectorios

cd /d Directory && rd /s /q .\
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top