强制刷新文件夹属性缓存的方法展示

经验创意 · 38 次浏览
白云朔 创建于 3天4小时前

由于Windows文件夹属性的缓存机制,通过脚本修改desktop.ini文件后,desktop.ini中的属性并不会立马生效,普通F5刷新也不会起到任何作用,经过大量网络检索后,终于找到解决方法,并运用到本动作。

现公开我寻找到的解决方法,以便各位搞开发的朋友使用,需要强制刷新文件夹属性缓存的朋友,可以直接看这,免去下载动作慢慢研究浪费的时间。

常规方法:

  1. 等待3~5分钟后,文件资源管理器自动刷新文件夹属性缓存:
    非常好的方法(狗头)

  2. 重启explorer.exe进程(文件资源管理器):
    该方法会造成部分程序和进程中断,影响范围过大。

  3. 更改“日期与设置”(ms-settings:dateandtime)中更改系统时间:
    还是一样的问题,会造成部分程序和进程出现错误(比如搜狗输入法),影响范围过大。

  4. 进入文件夹的属性窗口,在“自定义”选项卡中点击确定(无需更改设置,直接点击确定即可):
    影响范围小,但是太麻烦,唤醒文件夹的属性窗口只能通过模拟键盘操作或PowerShell(并且该方法还会导致PowerShell占用并锁定文件夹)
    Start-Process powershell -ArgumentList "-NoExit", "-Command", "(New-Object -ComObject Shell.Application).Namespace('要打开属性窗口的路径').Self.InvokeVerb('Properties')"

完美解决方法(来自于onlyclxy 大佬)

核心代码(VBS):

set shell = CreateObject("Shell.Application")
set folder = shell.NameSpace("文件夹路径")
folder.MoveHere "desktop.ini文件路径", 4+16+1024

其中,"文件夹路径"是你要刷新的目标文件夹的路径,"desktop.ini文件路径"是你要移动的desktop.ini文件的路径。
该代码能够强制刷新文件夹属性缓存,核心就是通过VBS脚本移动desktop.ini文件,将外部desktop.ini移入,或内部desktop.ini移出再移入,然后执行一次普通的刷新(F5),就能看到文件夹的图标成功被刷新。

你可以在外部(系统Temp文件夹)创建desktop.ini文件,再移入目标文件夹或目标文件夹的父级文件夹就行了。
个人这边建议移入父级文件夹的desktop.ini,因为这可以实现在目标文件夹不止一个,需要批量更新文件夹图标时,只通过该VBS代码执行一次命令,即可刷新父级文件夹中的所有文件夹。
但该方法也有一些小问题,在文件夹视图非详细信息视图时,可能会出现图标不刷新的情况,经过测试,该问题只需要在文件夹中创建任意文件即可。

也就是说,你可以通过执行以上VBS代码,来刷新详细信息视图的文件夹图标,并在目标文件列表中,创建任意文件,再删除该文件的方式(相比让Quicker循环创建VBS脚本,写入再运行会快很多),实现后台强制刷新文件夹属性缓存。

白云朔 最后更新于 2024/12/1

回复内容
暂无回复
回复主贴