OneDrive 释放空间按钮变灰的解决方法
前言前两个月升级了 Windows 11,那自然是 bug 一堆(现在也是,不过好很多)。
前言
前两个月升级了 Windows 11,那自然是 bug 一堆(现在也是,不过好很多)。在用 OneDrive 的时候突然发现右键释放空间的选项在某些文件夹上会变灰不可用,升级之前 Windows 10 是没这个毛病的。具体表现如下:
有两个文件夹,Programs 和 Questionnaire。Programs 显示为仅云端存储,Questionnaire 显示为本地 + 云端存储。
在 Programs 里面,有文件是本地 + 云端存储:
现在我想批量释放本地空间。但是我在 Programs 上右键,发现我没办法释放空间。
而在 Questionnaire 上右键就可以释放空间。
也就是说,这个 OneDrive 判断,外层文件夹是仅云端存储状态,里面的文件就一定是仅云端存储,所以它认为没必要释放空间,但是事实不是这样。
由于学业方面的压力,前段时间一直把这个事情放着没管,毕竟不影响使用。最近放假了就可以研究研究怎么解决这个问题。
正文
忘了什么时候,我在不知道哪里知道了 OneDrive 这个功能是用文件属性来实现的,而文件属性可以通过命令行工具 attrib 进行修改。于是我先在 Programs 文件夹下执行了 attrib 命令,看看文件的属性表。
发现仅云端存储的文件比正常文件多了两个属性:O 和 U。
推测给文件加上这两个属性之后,文件就会从本地删除。所以先试执行 attrib +O +U dummy.exe
,然后查看属性列表:
属性已经加上了,查看资源管理器:
发现这个文件已经变成仅云端保存了。执行前后对比:
磁盘占用已经变成 0 了。
那么回到问题上,怎么批量、递归地给文件设置属性?
查看 attrib 的帮助,发现 attrib 工具很贴心的有了 /S /D 两个开关,可以递归地设置文件和文件夹的属性。例如在 Questionnaire 目录里执行:attrib +O +U * /S /D:
再看 Questionnaire 中的文件,它们已经全部从本地被删除了:
这两个属性是干啥的?
查看 attrib 的帮助:
发现 O 和 U 分别对应 Offline 和 Unpinned 两个属性。
查阅微软的官方文档(https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/ca28ec38-f155-4768-81d6-4bfeb8586fc9):
大意就是:
具有 Offline 属性的文件的数据不是立刻就能被使用的,实际的文件数据被移动到了某个远程存储上。
具有 Unpinned 属性的文件不会被一直保存在本地计算机。
相对应的,有个 Pinned 属性:
- 具有 Pinned 属性的文件会一直在本地计算机上保留一份。
应用到 OneDrive 上,我们应该可以理解以下几点:
在本地有存储(图标为浅绿色对勾)的文件不具有 OUP 中的任何属性;
被 “释放空间”(图标为蓝色云)的文件具有 OU 属性;
“始终保留在此设备”(图标为深绿色对勾)上的文件具有 P 属性;
不太清楚这个问题是 Windows 11 的问题还是 OneDrive 的问题,总之希望帮助到遭遇到同样问题的人。