批处理文件.删除目录中的所有文件和文件夹

use*_*514 128 batch-file batch-processing

我想要一个批处理文件,它将删除我的无线工具包的Cache文件夹中的所有文件夹和文件.

目前我有以下内容:

cd "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS"
del *.db
Run Code Online (Sandbox Code Playgroud)

这将删除我的RMS目录中的所有.db文件,但是我想删除此目录中的所有内容

你能帮我吗?谢谢.

Gre*_*egM 149

创建批处理文件

将文本复制到批处理文件中

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

将删除所有文件和文件夹

  • 在执行此操作之前,请确保该目录存在. (9认同)
  • 太棒了,我正在寻找一些东西来清理每月批处理作业的文件和文件夹,这就行了. (4认同)
  • @vee 将循环更改为 `(rmdir "%%i" /s/q 2>NUL || del "%%i" /s/q >NUL ) ` 以抑制错误和删除消息 (4认同)
  • 只想在Bill_Stewart的评论中添加注释.你想要确保目录存在的原因是,否则,它将清除你当前所在的目录.在我的情况下,它是我已经工作超过30分钟的批处理文件.:(好的东西该文件夹的其余部分是在源代码管理下. (3认同)
  • 如果文件名中包含"特殊"字符,请先执行`chcp 10000`将编码更改为UTF-16 (2认同)

Jon*_*tin 46

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

  • 这不应该被标记为正确答案,因为它不会删除文件夹(如问题中所述). (49认同)
  • 注意:如果你想绕过"你确定要删除..."提示你需要添加/ FQ标志:`del./ F/Q` (47认同)
  • 这只会删除文件 - 而不是文件夹 (39认同)

psy*_*ych 31

IF EXIST "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" (
    rmdir "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" /s /q
)
Run Code Online (Sandbox Code Playgroud)

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

  • 我认为问题是清空所有内容的目录,但不删除目录本身. (13认同)

Bil*_*art 15

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
Run Code Online (Sandbox Code Playgroud)

  • 我对这一点如何工作感到疑惑,以及对其他人的解释:pushd更改为要删除子项的目录.然后当rd要求删除当前目录和所有子目录时,删除子目录成功,但删除当前目录失败 - 因为我们在其中.这会产生2> NUL吞下的错误.(2是错误流).非常狡猾的斯图尔特先生! (6认同)

小智 12

从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)
)
Run Code Online (Sandbox Code Playgroud)

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

  • 所以,快速提示 - 如果你尝试在网络路径上运行它,即使使用"IF EXIST"语句,它也将无法设置文件夹,并且将在cmd提示符中记录一条语句"UNC路径不支持,默认为Windows目录"然后它将尝试删除Windows目录中的所有内容.所以要小心. (2认同)

Pod*_*.io 10

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

del /S C:\Path\to\directory\*
Run Code Online (Sandbox Code Playgroud)

也可以使用RD命令.在没有提示的情况下以静默方式递归删除

@RD /S /Q %VAR_PATH%
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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
)
Run Code Online (Sandbox Code Playgroud)