起因
用 node 爬了一波壁纸图片,为了方便管理,我采用用户名作为文件夹名字对图片进行了分类。
没毛病吧~
然后其中有个用户名含有一个 .
然后 windows 也是支持文件夹名字中带 .
,也没毛病吧~
用 node 的 fs 创建文件夹成功,你看,就搁这资源管理器里呢~
双击打开,咦,怎么就打不开了呢?其他都能打开啊
算了,不管了,先删了吧。
????咋还不让删了啊!!
这可咋整!!!
解决
分析了下,出现问题的文件夹是以 .
结尾的,这大概就是问题的根源。
出问题先搜索一下,毕竟世界这么大,高人这么多,是个坑就有人掉进去过。
首先找到的是用 cmd 删除,熟练地摁下 win
+r
,敲入 cmd
,再来个大大的回车,熟悉的黑窗口出现了,另一边熟练地打开浏览器,搜了下删除文件夹的命令,好的 rd
,知道了,敲进去(我忘了怎么切盘符这件事你觉得我会说么?)rd test.
,再来一个大大的回车,完美~
咦,咋就找不到了呢,就搁这资源管理器呢,是不是瞎了啊?
没辙,只能换别的,文件粉碎机安排~专治疑难杂症
5,4,3,2,1,开始粉碎!!!
哦豁,在么完蛋,删不掉咯
最终,在知乎上找到了同病相怜的朋友,点这里查看
解铃还须系铃人,既然是 node 创建的文件夹,那就用 node 删除。不过 node 的版本必须是 12 以上,我最开始 node 版本是 10,删除的时候直接报错,升级 node 版本后成功删除
const fs = require('fs');
fs.rmdirSync("test.", {recursive: true})
至此,问题解决
结束?
你以为这就结束了?并没有,搜索了一下这个神奇的问题,找到了一篇文章
当我们直接在资源管理器中创建以 .
结尾的文件夹时,
得到的文件夹其实是不带 .
的
而参考前面提到的文章,直接重命名的时候输入 test.\
,系统会直接告诉你不能含有 \
然而在 cmd 中,不会限制你输入 \
,所以可以进行如下实验:
md test.
,得到test
文件夹md test.\
,依然得到test
文件夹md test..\
,得到test..
文件夹,并没有得到test.
md test...\
,得到test...
文件夹md test....\
,得到test....
文件夹
这里跟之前的文章有了一些出入,怀疑是系统版本的问题,做了一些处理,从截图上看,前辈用的是 xp 而我是 win10。
最终没能得到 test.
继续其他的,双击每个文件夹,都能打开,在 test
文件夹下建了个文件,结果他出现在了每个文件夹下。
????也就是说这些文件夹最终都指向了 test
?
删除任意带 .
的文件夹
大概率是了。
而我们直接在地址栏输入 G:\test\test....
,最终到达的地方也是 G:\test\test
所以,win10 过滤掉了文件夹最后所有的 .
,对任何带 .
的文件夹进行操作,都将被指向到不带 .
的文件夹,包括重命名等操作。
所以这也解释了为什么我最开始 test.
文件夹无法打开的问题,因为所有操作都被指向了 test
,没有 .
,然而目录下并没有这个文件夹,当然找不到了啦~
那么,带 .
的文件夹和不带 .
的是同一个文件夹么,没有深入研究,是,又或者不是,因为所有的操作都被指向了同一个文件夹,但是每个文件夹又有不同的属性,不好说~
注意
以上只是好奇心发作随便研究了一下,我不保证内容正确性,就当增加了一点没用的知识点吧~
所有截图是后期水文的时候模拟现场截的,与案发现场有一定的出入,仅供参考
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于