繁体   English   中英

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

[英]Delete all files and folders in a directory

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

目前我有以下内容:

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

这将删除我的RMS目录中的所有 .db 文件,但是我想删除该目录中的所有内容。 我怎样才能做到这一点?

利用:

  • 创建批处理文件

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

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

它将删除所有文件文件夹。

del *.*而不是del *.db 这将删除所有内容。

IF EXIST "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" (
    rmdir "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" /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 是错误流)。

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

利用

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 的回答。关于我抄袭他的事情有点混乱。我没有注意到他的帖子。我要感谢melpomene指出错误!)

尝试以下操作; 这个对我有用。

我有一个将数据转储到“C:\tmp”文件夹中的应用程序,以下对我来说效果最好。 它甚至不询问来删除数据。 我已经制定了它每 5 分钟运行一次的时间表

cd "C:\tmp"

del *.* /Q

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

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

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

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

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

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

只是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'.

您不能单独使用rmdirdel删除所有内容:

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

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

rmdir /s /q . 2>NUL

简单简单的答案:

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

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

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

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

小心,这很激烈。

我想建议使用像cleardir这样的简单工具。 因此,在批处理文件中,您可以编写:

cleardir path/to/dir

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

我是该工具的作者 =)

最简单的方法是:

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

警告!

这将删除文件夹中的所有内容而不要求确认!!!

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

您应该运行此命令以删除所有文件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\

你走在正确的轨道上。 只需添加代码以添加再次删除的文件夹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM