在 windows 中删除"..."文件夹时产生的疑问

2020-07-19 21:56:02 +08:00
 amonqsq

失手将一个文件夹的名字修改成了...

使用右键删除和 cmd 中的 del 操作都无法删除这个文件夹,但是用 wsl 删除成功了。

在 ubuntu 上测试了下,也可以正常删除。

请问两个文件系统有什么差异导致操作结果不同?

2171 次点击
所在节点    Windows
10 条回复
imn1
2020-07-19 22:27:54 +08:00
第三个点可能视为扩展名分隔符了
只是猜的,不是经验
lxilu
2020-07-20 01:45:27 +08:00
文件系统无关。线索:..表示上级目录
winterbells
2020-07-20 09:20:27 +08:00
del "..."

这个呢
shenlanAZ
2020-07-20 09:27:38 +08:00
盲猜底层 API 校验的规则不同,windows 上可以被 7zip 解压出(创建出)超长的文件名,但是却删不掉。

del 命令不行,也没有办法查找文件节点去删除节点。

最后一个好用的方法就是 去上级目录 rd /s 递归删除目录。
celeron533
2020-07-20 09:37:33 +08:00
> windows 上可以被 7zip 解压出(创建出)超长的文件名,但是却删不掉

可尝试在注册表中去掉 240 字文件夹长度兼容性限制
amonqsq
2020-07-20 11:21:17 +08:00
@shenlanAZ 我之前不太熟悉 command prompt,之前竟然在用 del 去删除文件夹(捂脸)。在上级删除...,显示"另一个程序正在使用此文件,进程无法访问。",在上上一级删除 dir_name\...,显示"目录不是空的。"。
amonqsq
2020-07-20 11:24:13 +08:00
@lxilu 我自认为您说的意思是匹配到 两个. 就不继续匹配了,但尝试删除"...exp"这样的文件夹名时能正常删除。
Wongz
2020-07-20 11:53:56 +08:00
rd /s /q X:\...\ 可以删除
amonqsq
2020-07-20 17:36:58 +08:00
@Wongz 在我这测试没效果
amonqsq
2020-07-23 10:41:21 +08:00
像 @shenlanAZ 说的那样,是因为底层 API 校验的规则不同,cmd 将...解析成了..\. 。 加入\\?\前缀可以完成删除。
[Naming Files, Paths, and Namespaces]( https://docs.microsoft.com/zh-cn/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/691404

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX