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

我想有一个批处理文件,将删除所有的文件夹和文件在我的缓存文件夹为我的无线工具箱。

目前我有以下几点:

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

这将删除所有。我的 RMS目录中的 db 文件,但是我想删除这个目录中的所有内容。我怎么能这么做?

488463 次浏览

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

试试下面的方法,对我很有效。

我有一个应用程序转储数据在我的“ C: tmp”文件夹,以下工作最适合我。它甚至没有要求 是的没有删除数据。我已经制定了每5分钟运行一次的时间表

cd "C:\tmp"


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

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

用途:

  • 创建批处理文件

  • 将下面的文本复制到批处理文件中

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

It will delete all files and folders.

更好的是,假设我想删除 C:\windows\temp文件夹下的所有内容。

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

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

pushd更改为要删除其子目录的目录。然后当 rd要求删除工作目录和所有子目录时,子目录的删除成功了,但是工作目录的删除失败了——因为我们在其中。这就产生了一个 2> NUL吞噬的错误。(2是错误流)。

您可以使用 机器人复制将一个空文件夹镜像到正在清除的文件夹。

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

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

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

我根据 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)
)

它将添加一个快速检查,确定变量中定义的文件夹首先存在,将目录更改为文件夹,并删除内容。

您可以使用 del/S标志(告诉它递归所有子目录中的所有文件)来完成此操作:

del /S C:\Path\to\directory\*

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

@RD /S /Q %VAR_PATH%

Rmdir (rd)

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
)

只是 GregM 的回答的一个修改版本:

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 /a-d 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'.
@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\

你是在正确的轨道上。只需添加代码添加文件夹被删除回来。

使用

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

(我想提一下 阿卜杜拉 · 萨布因的回答。我模仿他的时候弄混了。我没注意到他的帖子。我要感谢你 美柚烯(melpomene)指出错误!)

你不能只用 rmdirdel删除所有内容:

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

我的首选解决方案(正如我在许多其他批处理文件中使用的那样)是:

rmdir /s /q . 2>NUL

答案很简单:

C:
del /S /Q C:\folderName\oderFolderName\*

如果你必须从 D: 转换到 C: 或者 C: 转换到 D: (或者其他任何东西) ,这很重要

递归的,所有子文件夹沿删除

如果你没有激活安静模式,提示符会要求你为每个子文件夹键入 y... 你不想这样

小心点,这太激烈了。

我想建议使用简单的工具,如 更清楚了。因此,在批处理文件,你可以写:

cleardir path/to/dir

你会得到空目录 dir。有点慢,但仍然解决“问题”。

我是这个工具的作者

最简单的方法是:

  1. 创建 * . txt 文件
  2. 写: Rmdir/q/s. dir
  3. 在要清除的文件夹中将文件保存为 * . bat (可以调用文件 NUKE.bat)
  4. 打开它

警告!

这会删除文件夹中的所有内容,而不需要确认! ! !

所以选个明智的地方保存它。