不知道从什么时候开始,突然发现D盘根目录出现奇怪的空文件夹(图一),一开始因为需求紧张没时间管,但是没几天就发现这个空文件夹越来越多,多到上百个了。
要是几个那还能忍忍,这种程度已经严重影响到日常使用了,每次打开D盘需要滚动到最后才能找到想要的入口,这还多亏了根目录内容本来就不多,不然可能被逼当天重装系统跳过问题。
首先想到怎么解决删除的问题,因为这些文件夹还不能直接删除,删除时提示如图二。
于是开始探索怎么删除,下面是通过修改文件夹权限后可以删除的过程。
调整完后,再右键属性 -> 安全 看起来就正常了,这种状态下就可以直接删除。但是这个操作很费时,删除一个文件夹大约要30多秒,作为开发从业者,不能让自己受这种重复操作的折磨,于是想到使用批处理解决,这样再建一个自动任务,就大功告成了。
不出意外就出意外了,这个批处理我写不出来,搜索好多例子也写不出来。搞了大半天也没搞定,当天就把这个事情搁置。直到第二天想到既然现在能删除,那就找个按键精灵之类的来帮我删除,好歹也是自动的,只是需要专门空出时间来执行。
就这样找到了 TinyTask 来录制屏幕动作实现了自动删除,这样每天中午就启动执行录制的删除动作。这样大概过了有两个多月直到今天(2024年7月31日)。突然发现这些文件夹是在 Visual Studio 2022 调试运行时产生的,并且每次运行会产生两个文件夹。
这不仅联想到曾经在尝试解决内存泄漏的《.NET ABP.Zero 项目疑似内存排查历程》过程中有修改过“诊断工具”的设置,然后分别找了两台电脑的 Visual Studio 2022 的诊断工具设置印证猜想,果然打开对比发现区别在“暂存目录”的路径设置。
下面是两台电脑的对比图,暂存目录有值的当前电脑的,没有值是另外一台。然后将当前电脑的暂存目录改到一个指定目录去,不指定在根目录,这样就算再次产生临时文件夹也是集中在一起,不会影响日常使用了。
的确有想过将暂存目录清空,但是考虑到如果清空不知道这些临时文件夹会在什么位置出现,为了方便管理所以选择了现在的方式。
但是紧接着发生的事就又变得离奇了,当我再次尝试运行观察产生的 *.scratch 临时文件夹时,却出现了不一样的结果,这次还有其他的文件夹出现。今天时间太晚了先去睡觉明天接着写。
第二天(2024年8月1日)对于昨晚离奇表现,今天看起来似乎变得合理了,下面是调试运行后产生的8文件夹,并且这8个文件夹中是有内容的,不像之前 D 盘根目录的 *.scratch 是空文件夹,接着我将再次调试运行一次,这些文件夹会被自动清空,也就是说这些临时文件夹只会保留当前调试运行产生的。
下面是再次运行后的新文件夹,并且这些文件夹不需要修改权限能被直接删除。这样说来问题就出在根目录了,可能因为一些不清楚的原因,导致 Visual Studio 在根目录不能愉快的创建。换到不是根目录或把“暂存目录”置空,这些文件夹的表现应该也是这样, Visual Studio 应该是这样设计的。
到此困扰我两个多月的问题解决了,TinyTask 在这个过程中帮了大忙,下面留下一张倩影作为纪念。
整个过程中最难受的是搜索 *.scratch 会出现 Scratch 图形化编程的信息,彷佛“整个世界”就只在这里出现过一次似的,找不到方向。一开始我也是以为是 Scratch 软件产生的,但是在没有开过软件的情况下还是会产生,甚至都把 Scratch 删除,还是会继续产生 *.scratch 文件夹。
如果恰好有人再遇到这个“问题”,希望不再迷茫。