Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

What commands can I use (from the command prompt) to delete all files and all subdirectories from a folder, but not delete the folder itself? Basically at the end of the delete, there should be an empty folder.

share|improve this question

migrated from Dec 9 '10 at 2:37

This question came from our site for professional and enthusiast programmers.

i know rmdir /s but it deleting that folder itself also – subash Dec 8 '10 at 23:22
window command prompt – subash Dec 8 '10 at 23:25
cd <foldername>
del *.*

will delete the files. You'll need to do

rmdir /s <subfolder>

for each subfolder.


Try this in a batch file:

@echo off
cd "%1"
del *.* /y
for /d %%i in (*) do rmdir /s /q "%%i" 

Call it something like EmptyDir.bat. Then you can type:

emptydir <dirname>

and it will delete the files and folder in that folder, but leave the folder there.

share|improve this answer
can't we do some generic coding for this – subash Dec 8 '10 at 23:21
See update for example script – Andrew Cooper Dec 8 '10 at 23:39
It's been a long time since you needed *.* to indicate all files. Just * works fine (Windows has a concession where *.* matches all files, even those without dots in the middle). – Greg Hewgill Dec 8 '10 at 23:54
@Greg Hewgill: True. Force of habit. – Andrew Cooper Dec 9 '10 at 0:11

$> wipe.bat myExampleFolder

rmdir /s $1
mkdir $1    

With this solution, you may specify relative to current folder or even absolute paths.

Be sure to be aware of dangers. I.e. if the folder you chose to delete does not exists. (That is, why for example cd <targetdir>| del *.* can be quite dangerous... If you look for other solutions, current-directory-restore might be your friend:

@set OLDDIR=%CD%
cd $1
echo do stuff...
@cd /d %OLDDIR%
share|improve this answer

You must log in to answer this question.