错误0x80070091源于ntfs元数据异常或句柄占用,首选最深层建文本文档触发系统重扫;无效时依次用robocopy /mir镜像清空、powershell管理员模式takeown+icacls赋权后rd /s /q ?\路径强制删除,或安全模式下直接删除。

当你在Windows 10中删除文件夹、执行系统还原或清空回收站时突然弹出“错误 0x80070091:目录不是空的”,说明系统认定该目录存在子项,但实际无法列出或访问——常见于WindowsApps被进程锁定、无限嵌套文件夹、Git残留句柄或长路径名导致的元数据异常。
检查并释放WindowsApps文件夹占用
此错误最常由系统更新补丁KB3213986后SkyHost.exe或explorer.exe持续占用C:\Program Files\WindowsApps引发,直接重命名或删除会失败。
以管理员身份运行PowerShell,依次执行:
cd 'C:\Program Files'
takeown /f WindowsApps /r /d Y
icacls WindowsApps /grant "%USERDOMAIN%\%USERNAME%":(F) /t
attrib WindowsApps -h
这四步赋予你完全控制权并移除隐藏属性,【若rename仍报“拒绝访问”或“另一个程序正在使用此文件”,必须进入下一步】。
下载Process Hacker Portable(64位)及TrustedInstallerPlugin插件,解压后将插件放入\ProcessHackerPortable\App\ProcessHacker\x64\plugins目录;右键以“Run as Trusted Installer”启动,搜索“WindowsApps”,定位占用进程(通常是SkyHost.exe),右键→结束进程树;之后即可成功执行 rename WindowsApps WindowsApps.old。
处理无限嵌套文件夹
当文件夹A内含B,B内含C……层层递进至数百层,资源管理器无法展开、命令行dir卡死,此时报错0x80070091是必然结果。
方法一:手动破环(适用于嵌套≤20层)
进入最内层文件夹 → 右键新建一个文本文档 → 保存 → 逐级退出至最外层 → 此时可直接删除整个文件夹。
方法二:Robocopy镜像覆盖(推荐,稳定高效)
假设坏文件夹路径为D:\BadFolder,在其同级新建空文件夹D:\NewFolder → Win+R输入cmd → 执行:
cd /d D:\ → Robocopy /MIR NewFolder BadFolder
等待命令完成(进度条不动属正常,实际后台在逐层覆写为空)→ 删除BadFolder和NewFolder。
方法三:Python批量截短文件夹名(仅当路径超长触发ERROR_PATH_NOT_FOUND时启用)
运行以下脚本,它会将每一层嵌套文件夹名强制改为“1”,使路径长度可控:
import os
def rename_all_folders_to_one(root_dir):
current_dir = root_dir
while True:
items = os.listdir(current_dir)
if not items: break
child_dir = None
for item in items:
item_path = os.path.join(current_dir, item)
if os.path.isdir(item_path):
child_dir = item_path
break
if not child_dir: break
new_child_path = os.path.join(current_dir, "1")
if child_dir != new_child_path:
try: os.rename(child_dir, new_child_path)
except: pass
current_dir = new_child_path
rename_all_folders_to_one(r'D:\BadFolder')
修复Git残留导致的文件删除失败
如果你刚用Git Bash执行过git init或rm操作,随后发现某个文件(尤其是名称为...或以.开头的)死活删不掉,大概率是Git在后台持有句柄。
第一步:进入该文件所在目录,右键→Git Bash Here
第二步:执行 rm -f 文件名(注意是小写rm,不是rmdir)
第三步:若仍失败,改用 git clean -f -d . 强制清理当前目录所有未跟踪项
这一步操作起来很简单,直接把文件拖进去就行。但切记不要在非Git仓库目录误用git clean,【否则会无差别删除所有未add的文件】。
绕过系统限制强制删除
当以上方法均无效,且你确认该目录已无业务价值,可用磁盘底层指令直接标记为待清除。
① 按Win+X选择“Windows PowerShell(管理员)”
② 输入 fsutil resource setautoreset true C:\ (将C盘卷日志设为自动重置)
③ 输入 fsutil usn deletejournal /d C: (清除变更日志,解除部分句柄绑定)
④ 重启电脑,进入安全模式 → 打开资源管理器 → 直接删除目标文件夹
安全模式下绝大多数第三方进程不加载,WindowsApps占用、SkyHost、Git守护进程全部消失,这是最后的可靠手段。











