在日常使用 Windows 10 时,有时会遇到删除很普通的文件夹时提示“访问被拒绝”,以管理员权限重试后依然提示没有权限。如果使用命令行删除,则会提示“无法删除文件夹 XXX,目录不是空的。”。
本文将介绍其原因并提供解决方案。
删除文件夹遭到拒绝
有时我们在删除一个很普通的文件夹时,会提示需要提升权限才能删除。
▲ 需要提升权限
其实按照经验,这种问题与权限并没有什么关系。尤其是以上这种 NuGet 缓存目录下的文件夹,和权限更是扯不上关系。
所以其实点了“继续”也并没有什么左右,依然是没完没了的错误。
▲ 需要访问权限
如果我 一层层进入到文件夹的里面,然后 先删除文件,再一层层 退出来删掉文件夹,那么这个文件夹就能被正常删除掉。
这至少能说明,并没有文件或文件夹处于被占用的状态!!!
所以这个时候我考虑使用命令行删除:
▲ 使用命令行删除
命令行删除时,给了一个错误提示:
rd : Directory C:\Users\lvyi.nuget\packages\walterlv.package.demo\12 .0.27-alpha\src\Demo_\MagicalDemo_\Magical_ cannot be removed because it is not empty.
意思是说,命令行在删除其中一个子文件夹的时候出错,原因是:“目录不是空的。”
如果继续翻看下面的错误提示,发现这是一个按文件夹递归的提示。
解决方案
在网上搜索“目录不是空的”能得到不少结果,而且提供了不少解决方案:
- windows - Batch - Getting “The directory is not empty” on rmdir command - Stack Overflow
- powershell - Cannot remove item. The directory is not empty - Stack Overflow
- 还有更多……
然而,无论敲入什么样的命令,都没有用。这时我抱着试一试的心态去搜索框(小娜)中搜索“资源监视器”或直接输入 resmon 命令打开资源监视器。在“关联的句柄”中我输入了无法删除的文件夹名称,才终于找到了根本原因:
▲ 资源监视器
结束掉可能用到了这个版本 NuGet 包的 Visual Studio 后,文件夹可以被正常删除掉了。
▲ 因为删除太快,好不容易抓到的一张图
所以什么“需要管理员权限”啊,什么“目录不是空的”,都是假的!!!真正的原因还是文件夹被占用。
本文会经常更新,请阅读原文: https://blog.walterlv.com/post/delete-directory-that-is-not-empty.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected]) 。