目录不是空的错误

时间:2012-09-23 07:10:08

标签: batch-file

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

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

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

7 个答案:

答案 0 :(得分:10)

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

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

答案 2 :(得分:2)

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

rmdir c:\<directory> /s /q

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

  

目录不为空。

答案 3 :(得分:1)

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

IF EXIST%build_folder%RD / Q / S%build_folder%

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

此致 Anuj

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

答案 5 :(得分:0)

这对我有用

您需要转到文件夹所在的任何驱动器。然后右键单击驱动器&gt;属性&gt;检查扫描磁盘或扫描驱动器以及Windows8扫描和修复

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

Batch - Getting "The directory is not empty" on rmdir command

答案 6 :(得分:0)

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

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