Windows10下无法删除Qt意外创建的非法命名目录该如何解决?
解决方案
Windows默认处理文件路径时会自动修剪末尾的空格和句点,常规操作时输入的带末尾双点的路径会被系统自动修正为不带点的路径,无法匹配到目标目录,使用原生路径前缀绕过该修剪逻辑即可完成删除。
操作步骤
- 确认目标目录的完整绝对路径,例如目录位于D盘test目录下、名称为
invalid..,则完整路径为D:\test\invalid.. - 按下Win+R输入
cmd打开命令提示符,不要使用PowerShell,PowerShell对该前缀的兼容表现不稳定 - 若目标为空白目录,直接执行删除命令,在完整路径前添加
\\?\前缀即可:rd /s /q "\\?\D:\test\invalid.."
其中/s表示递归删除目录下所有子项,/q表示静默删除无需二次确认 - 若提示目录非空删除失败,先执行命令清空目录内所有文件,再执行上述删除目录命令:
del /f /s /q "\\?\D:\test\invalid..\*" - 如果你要通过Qt实现删除,直接给QDir传入带
\\?\前缀的完整绝对路径即可,此前删除失败是因为传入的路径未加前缀,被系统自动修剪了末尾的点,匹配不到目标目录。
注意事项
- 路径必须为完整绝对路径,不能使用相对路径,否则
\\?\前缀不会生效 - 不要随意对正常路径使用该前缀,跳过系统路径校验可能导致不可预期的操作
内容的提问来源于stack exchange,提问作者Mehran Khazaeizadeh
相关产品推荐
相关产品推荐

