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

时间:2011-07-26 21:01:45

标签: batch-file batch-processing

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

目前我有以下内容:

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

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

你能救我吗?感谢。

16 个答案:

答案 0 :(得分:145)

创建批处理文件

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

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

将删除所有文件和文件夹

答案 1 :(得分:42)

del *.*代替del *.db。这将删除所有内容。

答案 2 :(得分:29)

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

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

答案 3 :(得分:14)

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

答案 4 :(得分: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)
)

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

答案 5 :(得分:9)

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

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

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

@RD /S /Q %VAR_PATH%

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

答案 6 :(得分: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
)

答案 7 :(得分:4)

试试这个,它适用于我,我有一个应用程序将数据转储到我的“C:\ tmp”文件夹&以下对我来说效果最好,它甚至不会要求是或否删除数据,我已经制定了每5分钟运行一次的时间表

cd "C:\tmp"

del *.* /Q

答案 8 :(得分:2)

更好的是,我们想要删除c:\ windows \ temp文件夹下的所有内容。

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

答案 9 :(得分:2)

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

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

如果您无法删除或重新创建实际文件夹,它也可以使用。

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

答案 10 :(得分:1)

使用

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。关于我抄袭他的事情有点混乱。我没注意到他的帖子。

我要感谢@melpomene指出错误!

答案 11 :(得分:0)

仅修改版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 /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

答案 12 :(得分:0)

您无法仅使用rmdirdel删除所有内容:

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

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

rmdir /s /q . 2>NUL

答案 13 :(得分:0)

简单的答案:

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

C: 重要的是,如果您必须从 D: 切换到 C: 或 C: 切换到 D:(或其他任何内容)

/S 递归,所有子文件夹一起删除

/Q 如果您不激活安静模式,提示将要求您为每个子文件夹键入 y...您不希望那样

小心点,这很严重。

答案 14 :(得分:-1)

@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\

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

答案 15 :(得分:-1)

您应该运行此命令以删除所有文件del *。*