2

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.

2
  • i know rmdir /s but it deleting that folder itself also
    – subash
    Dec 8, 2010 at 23:22
  • window command prompt
    – subash
    Dec 8, 2010 at 23:25

2 Answers 2

10
cd <foldername>
del *.*

will delete the files. You'll need to do

rmdir /s <subfolder>

for each subfolder.

Update

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.

4
  • can't we do some generic coding for this
    – subash
    Dec 8, 2010 at 23:21
  • See update for example script
    – Andrew Cooper
    Dec 8, 2010 at 23:39
  • 1
    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). Dec 8, 2010 at 23:54
  • @Greg Hewgill: True. Force of habit.
    – Andrew Cooper
    Dec 9, 2010 at 0:11
0

$> 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%

You must log in to answer this question.