111

I use Windows.

I want to delete all files and folders in a folder by system call.

I may call like that:

>rd /s /q c:\destination >md c:\destination 

Do you know an easier way?

2

12 Answers 12

168

No, I don't know one.

If you want to retain the original directory for some reason (ACLs, &c.), and instead really want to empty it, then you can do the following:

del /q destination\* for /d %x in (destination\*) do @rd /s /q "%x" 

This first removes all files from the directory, and then recursively removes all nested directories, but overall keeping the top-level directory as it is (except for its contents).

Note that within a batch file you need to double the % within the for loop:

del /q destination\* for /d %%x in (destination\*) do @rd /s /q "%%x" 
Sign up to request clarification or add additional context in comments.

12 Comments

i was able to do this without a batch file. use the && to concat the two operations
I am a complete windows-shell noob: how do i set the destination to a path with this example?
You replace the word destination by the path, possibly using quotes around the whole thing if necessary.
This answer makes me sad, because it is the best answer
@stenci: The second line can only delete the given directory. It does so recursively, indeed, but it cannot delete a file. Therefore, to remove everything inside a directory you have to remove all files, and all directories. Note that this is not about deleting a single directory and everything within. It's about deleting everything within and keeping the parent directory.
|
44

del c:\destination\*.* /s /q worked for me. I hope that works for you as well.

5 Comments

Deletes all the files but not the folders.
What worked for me was navigate to the folder. (shift right click, select open cmd prompt here) then del *.*
example for relative path del "../../server/front-end\*.*"
@DanielL.VanDenBosch, that's not very scriptable.
The *.* mask used will skip files that do not have an extension. For example makefile. Mask must be used *.
35

I think the easiest way to do it is:

rmdir /s /q "C:\FolderToDelete\" 

The last "" in the path is the important part.

This deletes the folder itself. To retain, add mkdir "C:\FolderToDelete\" to your script.

5 Comments

This also deletes the folder itself.
Does this works recursively what is the path it too long?
This seems to be the best answer, since it deletes the folders & files recursively
combining this with mkdir C:\FolderToNotToDelete was enough for me :)
This can be problematic if your parent folder (which gets deleted this way) holds some important permissions, which you now need to recreate...
18

Yes! Use Powershell:

powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force" 

Comments

14

If the subfolder names may contain spaces you need to surround them in escaped quotes. The following example shows this for commands used in a batch file.

set targetdir=c:\example del /q %targetdir%\* for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^" 

Comments

9

To delete file:

del PATH_TO_FILE 

To delete folder with all files in it:

rmdir /s /q PATH_TO_FOLDER 

To delete all files from specific folder (not deleting folder itself) is a little bit complicated. del /s *.* cannot delete folders, but removes files from all subfolder. So two commands are needed:

del /q PATH_TO_FOLDER\*.* for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i" 

You can create a script to delete whatever you want (folder or file) like this mydel.bat:

@echo off setlocal enableextensions if "%~1"=="" ( echo Usage: %0 path exit /b 1 ) :: check whether it is folder or file set ISDIR=0 set ATTR=%~a1 set DIRATTR=%ATTR:~0,1% if /i "%DIRATTR%"=="d" set ISDIR=1 :: Delete folder or file if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1") exit /b %ERRORLEVEL% 

Few example of usage:

mydel.bat "path\to\folder with spaces" mydel.bat path\to\file_or_folder 

Comments

1

One easy one-line option is to create an empty directory somewhere on your file system, and then use ROBOCOPY (http://technet.microsoft.com/en-us/library/cc733145.aspx) with the /MIR switch to remove all files and subfolders. By default, robocopy does not copy security, so the ACLs in your root folder should remain intact.

Also probably want to set a value for the retry switch, /r, because the default number of retries is 1 million.

robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3 

Comments

1

try this, this will search all MyFolder under root dir and delete all folders named MyFolder

for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a" 

Comments

0

I had an index folder with 33 folders that needed all the files and subfolders removed in them. I opened a command line in the index folder and then used these commands:

for /d in (*) do rd /s /q "%a" & ( md "%a") 

I separated them into two lines (hit enter after first line, and when asked for more add second line) because if entered on a single line this may not work. This command will erase each directory and then create a new one which is empty, thus removing all files and subflolders in the original directory.

Comments

0

Navigate to the parent directory

Line1 pushd "Parent Directory"

Delete the sub folders

Line2 rd /s /q . 2>nul

https://superuser.com/questions/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt

1 Comment

If you use pushd you have to use popd too. Unfortunately, popd does not work when you delete the directory. So, you have to do cd instead of pushd.
0

It takes 2 simple steps. [/q means quiet, /f means forced, /s means subdir]

  1. Empty out the directory to remove

    del *.* /f/s/q 
  2. Remove the directory

    cd .. rmdir dir_name /q/s 

See picture

1 Comment

what if you just want to remove the contents and not the entire directory?
-1
del .\* 

This Command delete all files & folders from current navigation in your command line.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.