windows - online - ¿Qué pasó con deltree, y cuál es su reemplazo?
tag rename (8)
Como otros han mencionado, el comando rd
tiene el rd
/s
para eliminar recursivamente los subdirectorios. Puede combinarlo con el /q
para eliminar por la fuerza un subdirectorio (y su contenido) sin que se le solicite como tal
rd /s /q c:/foobar
Lo que a todos les falta es que rd
no es un reemplazo exacto para deltree
ya que aparentemente ( almost ) cada página devuelta por Google para windows deltree
haría creer. El comando deltree
funcionó tanto para los directorios como para los archivos , lo que lo convierte en un único y conveniente comando de eliminación para todos los propósitos. Eso es de lo siguiente son válidos:
deltree /y c:/foobar
deltree /y c:/baz.txt
Sin embargo, rd
(como es lógico) 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
del del
œ solo funciona para los archivos, no directorios, así que solamente el segundo comando es válido mientras que el primer da un error:
del /f /q c:/foobar
del /f /q c:/baz.txt
No hay una forma incorporada de eliminar archivos y directorios como podría hacerse 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 de DOS de 16 bits (incluso en Windows 9x).
Otra opción es crear un archivo por lotes que invoque tanto 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 tanto a rd
como a del
, pasando los argumentos y redirigiendo la salida a nul
para evitar el error que uno de ellos emitirá invariablemente.
Es probable que desee personalizar el comportamiento para acomodar o simplificar parámetros o permitir mensajes de error, pero aún así, no es ideal y no es un reemplazo directo para deltree
.
Una alternativa es obtener una herramienta de terceros, aunque encontrar uno es un ejercicio real en búsqueda-consulta-elaboración.
En versiones anteriores de MS-DOS, quiero decir la versión 7, pero podría estar equivocado, había un comando deltree
, que eliminó 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 de fácil (es decir, en un comando) eliminar un árbol de un archivo por lotes?
En realidad, los comandos RMDIR y RD en el sistema operativo Windows moderno fusionan los comandos RD y Deltree de Win 98 en un solo comando. Es un comando interno por lo que no encontrará ningún RD.exe y RMDIR.exe.
Al escribir este "RD /?" en cmd sin double qoutes obtendrá exactamente lo que desea.
Fue reemplazado con los comandos: RMDIR o RD
Eliminar todos los subdirectorios con / S
Úselo discretamente con el / Q
Ejemplo:
RMDIR /S /Q Folder2Delete
RD /S /Q Folder2Delete
Documentación:
Hoy en día, puedes usar Powershell para hacer la misma tarea:
powershell -Command "Remove-Item ''PathToMyDirectory/*'' -Recurse -Force"
Sintiéndome nostálgico, escribí mi propio deltree.exe. Funciona con directorios y archivos, y usa 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 puedes usarlo como unix rm:
deltree -rf *
para eliminar un directorio y todo su contenido recursivamente
rd /s MY_DOOMED_DIR
$ 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
rmdir /s /q directory