I have a script that runs the command:
Is there a command line switch I can use that will also delete all subfolders in that directory? Thanks!
Server Fault is a question and answer site for system and network administrators. It only takes a minute to sign up.Sign up to join this community
If there are files in the C:\mydir directory then you'll need to do both lines. Otherwise, the first line will do what you want:
FOR /D %i IN (C:\mydir\*) DO RD /S /Q "%i" DEL /Q C:\mydir\*.*
That preserves the C:\mydir directory.
Edit: David1235 is quite right. If you want to do this in a batch file, you'll need to double-up the "%" in the "FOR ..." line.
It's a little unclear to me why David1235's script needs the "pushd" and "popd" when you can specify the path right in the "FOR ..." and "DEL ..." lines, though.
If you want to run your script from anywhere, try
@echo off pushd "C:\mydir" for /d %%d in (*.*) do rmdir /s /q "%%d" del /q *.* popd
In a batch script, you need the double percent signs. From "help for":
To use the FOR command in a batch program, specify %%variable instead of %variable. Variable names are case sensitive, so %i is different from %I.
The shortest and simplest way:
CD "%temp%\OrYourPath\" && RD /q /s .
This preserves the parent folder, which may have ACLs that you want to keep. If any of the contents are in use, you will get errors. If you want to silence and ignore those, add a
2>nul at the end.
If you want to remain in the current directory, or have a UNC path, use PUSHD + RD + POPD instead of CD + RD.