Automatically delete empty subdirectories with one-line batch file
Deleting empty subdirectories seems like something Windows ought to do automatically, but for some reason that function just isn't included as part of the OS. Luckily, you don't need to download a utility to do it; instead, you can create a single line batch file that will do exactly what you're looking for:
for /f "usebackq" %%d in ("dir /ad/b/s | sort /R") do rd "%%d"
Raymond Chen, the venerable Microsoft coder, explains how this works. Basically, it uses a trick to enumerate the directories in reverse order. Since you can't delete a directory that contains data (including other directories) the only way to automate deleting directories is to start at the very bottom of the tree and work your way up.













Comments
5
Subscribe to commentsJeebusMay 5th 2008 1:26PM
RD /S works for me.
hazardMay 6th 2008 1:05AM
I presume this is for a deltree operation that works on all flavours of Windows cause it's certainly not required for WinXP as Jeebus has pointed out rd /s or rmdir /s do this already ...
MarkMay 6th 2008 11:29AM
Uh guys, doing that will delete everything. Files and all. This is just to delete empty subdirectories and leave your files alone.
dsfdsfsdfMay 7th 2008 11:26PM
"Deleting empty subdirectories seems like something Windows ought to do automatically"
-> Huh? I'm pretty glad that it does not...
HansJul 1st 2008 6:46AM
This looks handy, but how I have another problem. I do scheduled exports from a system and it mostly dumps empty files into a folder. How do I do to delete zero (null) sized files within that directory so that only files that contain data are spared?