Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What ever happened to deltree, and what's its replacement?

In earlier versions of MS-DOS - I want to say version 7, but I could be wrong - there was a deltree command, which recursively deleted all subdirectories and files from a given path.

deltree no longer exists, but del didn't seem to inherit the ability to delete a tree. del /s deletes files, but not folders.

How to you easily (i.e., in one command) delete a tree from a batch file?

like image 338
David Koelle Avatar asked Dec 03 '08 21:12

David Koelle


People also ask

How do I use the Deltree command in Windows 10?

Deltree syntax 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[...]] Suppresses prompting to confirm you want to delete the subdirectory. Specifies the name of the directory you want to delete.

What is Deltree command in DOS?

In computing, DELTREE (short for delete tree) is a command line command in some Microsoft operating systems, SpartaDOS X and FreeDOS that recursively deletes an entire subdirectory of files. DELTREE. Developer(s) Microsoft, Datalight, Charles Dye.

How do you delete directory in DOS which is not empty?

To remove a directory that is not empty, use the rm command with the -r option for recursive deletion. Be very careful with this command, because using the rm -r command will delete not only everything in the named directory, but also everything in its subdirectories.


1 Answers

As others have mentioned, the rd command has the /s switch to recursively remove sub-directories. You can combine it with the /q switch to forcibly delete a sub-directory (and its contents) without prompting as so

rd /s /q c:\foobar 

What everybody is missing is that rd is not an exact replacement for deltree as seemingly (almost) every page returned by Googling for windows deltree would have you believe. The deltree command worked for both directories and files, making it a single convenient, all-purpose deletion command. That is both of the following are valid:

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

However rd (not surprisingly) only works for directories. As such only the first of these commands is valid while the second gives and error and leaves the file un-deleted:

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

Further, the del command only works for files, not directories, so only the second command is valid while the first gives an error:

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

There is no built-in way to delete files and directories as could be done with deltree. Using rd and del individually is inconvenient at best because it requires distinguishing whether a file-system object (file-/folder-name) is a file or directory which is not always possible or practical.

You can copy the deltree command from a previous OS, however it will only work on 32-bit versions of Windows since it is a 16-bit DOS command (even in Windows 9x).

Another option is to create a batch-file that calls both del and rd; something like this:

::deltree.bat  @echo off rd  %* 2> nul del %* 2> nul 

You would call it as so:

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

This calls both rd and del, passing in the arguments and redirecting the output to nul to avoid the error that one of them will invariably emit.

You will probably want to customize the behavior to accomodate or simplify parameters or allow error messages, but even so, it is not ideal and not a direct replacement for deltree.

An alternative is to get a third-party tool, though finding one is a real exercise in search-query-crafting.

like image 121
Synetech Avatar answered Sep 22 '22 08:09

Synetech