4

我尝试在我的批处理文件中删除包含许多文件和子目录的文件夹(BR),我尝试以下操作:

如果存在 C:\BR ( rmdir "C:\BR" /S /q )

但有时我会收到一个错误,即特定文件夹不是空的。这些文件夹包含 CSS 文件。什么问题??

4

7 回答 7

12
rd /s /q DIRNAME
rmdir /s /q DIRNAME

无法删除的文件正在使用中。
关闭使它们保持打开状态的任何程序,可能是您的浏览器,然后重试。

让我猜猜,你试图删除你的%TMP%文件夹。



编辑:回答 zipi 的问题。

它将删除所有可以删除的文件和文件夹。所以,如果c:\tmp\dir2\dir3\open.txt是打开的,c:\tmp\emptyDir是一个空目录,你这样做:

c:\>dir c:\tmp /b /s
c:\tmp\a.txt
c:\tmp\dir2\b.txt
c:\tmp\dir2\dir3\open.txt

c:\>rd /q /s c:\tmp

c:\>dir /s /b c:\tmp
c:\tmp\dir2\dir3\open.txt

您将删除:

c:\tmp\a.txt
c:\tmp\dir2\b.txt

并删除:

c:\tmp\emptyDir

但仍然有目录...

c:\tmp
c:\tmp\dir2
c:\tmp\dir2\dir3

...一个文件:

c:\tmp\dir2\dir3\open.txt

相反,如果a.txt是打开的,您将只有:

c:\tmp\

c:\tmp\a.txt
于 2012-09-24T12:43:58.240 回答
2

在 win7 上,我使用一个简单的 bat 文件来解决这个问题:

call :rmdir "my_directory_01"
call :rmdir "my_directory_02"
pause
goto :EOF

:rmdir
  if exist %1 rmdir /s /q %1
  if exist %1 goto :rmdir
goto :EOF
于 2014-01-16T11:57:06.560 回答
2

我有一个类似的问题。尝试了许多不同的解决方案,但最终只有以下方法有效:

rmdir c:\<directory> /s /q

以前在 CMD 中使用其他方法我得到以下信息:

目录不为空。

于 2016-06-23T14:16:58.003 回答
1

我有同样的问题,解决方案非常愚蠢。请先使用 /Q 再使用 /S 来解决您的问题。所以命令应该是这样的:

如果存在 %build_folder% RD /Q /S %build_folder%

如果这能解决您的问题,请告诉我。

问候阿努杰

于 2016-04-18T17:46:49.313 回答
0

要在命令行中删除目录,您必须首先删除它包含的所有文件和子焊料。如果其中一些项目是只读的,则可能会出现此问题。/f 将尝试强制删除它们。

尝试

if exists C:\BR (del "C:\BR" /f /s /q)

在这里,您有 DEL 命令的 MS 文档:http: //www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/del.mspx? mfr=true

于 2012-09-23T07:19:42.853 回答
0

这对我有用

您将需要转到该文件夹​​所在的任何驱动器。然后右键单击驱动器>属性>检查扫描磁盘或扫描驱动器和windows8扫描和修复

然后返回您的文件夹并将其删除

批处理 - 在 rmdir 命令上获取“目录不为空”

于 2014-04-25T12:32:06.637 回答
0

在我的情况下,使用 rd /Q /S 删除目录并使目录不为空的失败归结为文件权限。批处理作业正在执行备份并在最后删除最旧的备份文件夹以保留最新的 10 个备份。普通用户帐户仅对子文件夹中的某些文件具有读取和执行权限。在任务计划程序下运行包含 rd 命令的批处理文件,并在“以最高权限运行”选项中打勾,以删除目录。

如果您在 cmd 下运行批处理文件并选择以管理员身份运行,则可以实现类似的一次性操作。在 Windows 7 中,在搜索程序和文件框中键入 CMD,然后右键单击弹出窗口顶部的 cmd.exe,然后单击以管理员身份运行。然后在 cmd“黑色背景”窗口中找到并运行您的批处理文件。

于 2018-03-24T20:24:21.317 回答