我正在制作批处理脚本,部分脚本正在尝试删除目录及其所有子目录。我收到关于子目录不为空的间歇性错误。我读了一篇关于索引是罪魁祸首的文章。我禁用了WSearch,但最终我又收到了错误。
rmdir /S /Q "C:\<dir>\"
答案 0 :(得分:59)
我遇到了与哈里约翰斯顿提到的相同的问题。 rmdir /s /q
会抱怨目录不是空的,即使/s
意味着要为你清空!我认为这是Windows中的个人错误。
我的解决方法是在删除目录之前del
目录中的所有内容:
del /f /s /q mydir 1>nul
rmdir /s /q mydir
(1>nul
隐藏del
的标准输出,否则会列出它删除的每个文件。)
答案 1 :(得分:37)
我很熟悉这个问题。最简单的解决方法是有条件地重复操作。我从来没有看到它连续两次失败 - 除非实际上有一个打开的文件或权限问题,显然!
rd /s /q c:\deleteme
if exist c:\deleteme rd /s /q c:\deleteme
答案 2 :(得分:18)
我刚刚遇到了同样的问题,它与一些丢失或损坏的文件有关。要解决此问题,只需运行check disk:
chkdsk /F e:
可以从搜索窗口框或cmd提示符运行。 /F
修复了找到的任何问题,例如恢复文件。一旦完成运行,您可以像平常一样删除文件和文件夹。
答案 3 :(得分:13)
以管理员身份输入命令提示符并运行
rmdir /s <FOLDER>
答案 4 :(得分:3)
正如@gfullam在对@ BoffinbraiN的回答中所说的那样,你要删除的<dir>
可能不是包含文件的那个:<dir>
中可能有子目录a&#34;目录不为空&#34;消息,唯一的解决方案是递归迭代目录,手动删除所有包含的文件...我最终决定使用UNIX的rm
端口。 rm.exe
附带Git Bash,MinGW,Cygwin,GnuWin32等。您只需要在PATH中拥有其父目录,然后像在UNIX系统中那样执行。
批处理脚本示例:
set PATH=C:\cygwin64\bin;%PATH%
rm -rf "C:\<dir>"
答案 5 :(得分:3)
我有“ C:\ Users \用户名\ OneDrive \ Fonts”,它被mklinked(/ D)到“ C:\ Windows \ Fonts”,并且我遇到了同样的问题。就我而言
cd“ C:\ Users \ User Name \ OneDrive”
rd / s字体
Y(确认操作)
帮助了我。希望对您有帮助; D
答案 6 :(得分:2)
我有类似的问题,试图通过Windows资源管理器删除一个空文件夹。向我展示了非空错误,所以我想我是通过admin cmd尝试的,但这里的答案都没有帮助。
将文件移入空文件夹后。我能够删除非空文件夹
答案 7 :(得分:1)
我是我的情况我只是将文件夹移动到根目录。
move <source directory> c:\
然后运行命令删除目录
rmdir c:\<moved directory> /s /q
答案 8 :(得分:1)
对我有用的是以下内容。我看起来像RMDir命令几乎一直发出“目录不为空”...
:Cleanup_Temporary_Files_and_Folders
Erase /F /S /Q C:\MyDir
RMDir /S /Q C:\MyDir
If Exist C:\MyDir GoTo Cleanup_Temporary_Files_and_Folders
答案 9 :(得分:1)
rd /s
拒绝删除某些文件的原因很可能是由于目录中文件的READONLY文件属性。
解决此问题的正确方法是,确保首先重置所有文件的属性:
attrib -r %directory% /s /d
rd /s %directory%
可能还有其他文件,例如隐藏文件或系统文件,因此,如果您想安全播放它:
attrib -h -r -s %directory% /s /d
rd /s %directory%
答案 10 :(得分:0)
我可以想到以下可能的原因:
对于1.)您可以尝试runas /user:Administrator
以获得更高的权限或通过上下文菜单以管理员身份启动批处理文件。如果这没有帮助,甚至管理员也可能没有权利。然后你需要接管目录的所有权。
对于2.)下载Process Explorer,单击Find/Find handle or DLL...
或按 Ctrl + F ,键入目录名称并找出谁使用它。如果可能,请关闭使用该目录的应用程序。
答案 11 :(得分:0)
类似于Harry Johnston的回答,我循环直到它起作用。
set dirPath=C:\temp\mytest
:removedir
if exist "%dirPath%" (
rd /s /q "%dirPath%"
goto removedir
)
答案 12 :(得分:0)
Windows有时会被“设计破坏”,因此您需要创建一个空文件夹,然后使用备份模式将“破碎文件夹”镜像为“空文件夹”。
robocopy - cmd copy utility
/copyall - copies everything
/mir deletes item if there is no such item in source a.k.a mirrors source with
destination
/b works around premissions shenanigans
像这样创建一个空目录:
mkdir empty
像这样用空的覆盖损坏的文件夹:
robocopy /copyall /mir /b empty broken
然后删除该文件夹
rd broken /s
rd empty /s
如果这样做没有帮助,请在单击“重新启动”时按住Shift并尝试在恢复模式下再次运行这些命令,尝试在“具有命令提示符的恢复模式”下重新启动
答案 13 :(得分:-1)
"firebase": "^4.10.1"
这对我有用。
答案 14 :(得分:-2)
这是因为您在目录中。确保您的CLI和资源管理器不在目录中。确保关闭所有它们。然后以管理员身份运行,cd
到父目录并运行:
rmdir /s /q mydir