batch file。 删除目录中的所有文件和文件夹

我想要一个batch file,将删除我的无线工具箱的caching文件夹中的所有文件夹和文件。

目前我有以下几点:

cd "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" del *.db 

这将删除我的RMS目录中的所有.db文件,但是我想从这个目录中删除所有的东西

你能帮我吗? 谢谢。

del *.*而不是del *.db 。 这将删除一切。

创build一个batch file

将以下文本复制到batch file

 set folder="C:\test" cd /d %folder% for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q) 

将删除所有文件和文件夹

 IF EXIST "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" ( rmdir "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" /s /q ) 

这将删除文件夹(和文件夹本身)的所有内容。

只要把这个从morty346贴出来:

 set folder="C:\test" IF EXIST "%folder%" ( cd /d %folder% for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q) ) 

添加一个快速检查variables中定义的文件夹是否存在,然后将目录更改为该文件夹并删除内容。

del *.*只会删除文件,而不能删除子目录。 要核实一个目录的内容,你可以使用这个脚本:

 @echo off setlocal enableextensions if {%1}=={} goto :HELP if {%1}=={/?} goto :HELP goto :START :HELP echo Usage: %~n0 directory-name echo. echo Empties the contents of the specified directory, echo WITHOUT CONFIRMATION. USE EXTREME CAUTION! goto :DONE :START pushd %1 || goto :DONE rd /q /s . 2> NUL popd :DONE endlocal 

你可以使用del/S标志(告诉它recursion所有子目录中的所有文件):

 del /SC:\Path\to\directory\* 

RD命令也可以使用。 recursion地在没有提示的情况下悄悄地删除

 @RD /S /Q %VAR_PATH% 

https://technet.microsoft.com/en-gb/library/bb490990.aspx

试试这个,它适用于我,我有一个应用程序转储数据在我的“C:\ tmp”文件夹下面的作品最适合我,它甚至不要求是或否删除数据,我已经每5分钟后运行一次

 cd "C:\tmp" del *.* /Q 
 set "DIR_TO_DELETE=your_path_to_the_folder" IF EXIST %DIR_TO_DELETE% ( FOR /D %%p IN ("%DIR_TO_DELETE%\*.*") DO rmdir "%%p" /S /Q del %DIR_TO_DELETE%\*.* /F /Q ) 

更好的是,假设我想删除c:\ windows \ temp文件夹下的所有东西。

 @echo off rd c:\windows\temp /s /q 

您可以使用robocopy将空文件夹镜像到您正在清除的文件夹中。

 robocopy "C:\temp\empty" "C:\temp\target" /E /MIR 

如果您不能删除或重新创build实际的文件夹,它也可以。

它确实需要一个现有的空目录。

只是一个修改版本的https://stackoverflow.com/users/478183/morty346答案;

 set folder="C:\test" cd /D %folder% if NOT %errorlevel% == 0 (exit /b 1) echo entire content of %cd% will be deleted, press Ctrl-C to abort pause REM first the directories /ad option of dir for /F "delims=" %%i in ('dir /b /ad') do (echo rmdir "%%i" /s/q) REM now the files /ad option of dir for /F "delims=" %%i in ('dir /b /a-d') do (echo del "%%i" /q) REM to deactivate simulation mode remove the word echo before rmdir and del 

使用

 set dir="Your Folder Path Here" rmdir /s %dir% mkdir %dir% 

这个版本删除没有问:

 set dir="Your Folder Here" rmdir /s /q %dir% mkdir %dir% 

例:

 set dir="C:\foo1\foo\foo\foo3" rmdir /s /q %dir% mkdir %dir% 

这将清除C:\foo1\foo\foo\foo3

我想提及@Abdullah Sabouin这个回答https://stackoverflow.com/a/44578851/8238944 。 关于我抄袭他,混淆了一下。 我没有注意到他的post。

我想感谢@melpomene指出错误!

你不能用rmdirdel单独删除所有的东西:

  • rmdir /s /q不接受通配符参数。 所以rmdir /s /q *会报错。
  • del /s /f /q会删除所有文件,但空的子目录将保留。

我的首选解决scheme(正如我在许多其他batch file中所使用的)是:

 rmdir /s /q . 2>NUL 
 @echo off @color 0A echo Deleting logs rmdir /S/Q c:\log\ ping 1.1.1.1 -n 5 -w 1000 > nul echo adding log folder back md c:\log\ 

你在正确的轨道上只是添加一个代码来添加删除的文件夹再次