用 Codex 做了一个 Windows 右键菜单小工具:一键把文件日期改为当前时间

今天遇到一个很实际的小需求:一批渲染图已经修改完成,但 Windows 资源管理器里显示的日期还是旧时间。普通地改文件“创建时间/修改时间”还不够,因为图片内部的“拍摄日期”也会影响资源管理器的“日期”列。于是我和 Codex 一起把这个流程做成了一个可复用的小工具。

这个工具的初衷其实很朴素:有些工作并不是“什么时候完成”就必须“什么时候交付”。很多时候我们会提前把文件做完,但选择在更合适的时间统一发送。如果接收方只看文件最后修改时间,就可能推断出真实完成时间,从而对工作节奏产生不必要的联想。与其每次手动处理文件时间,不如把这件小事工具化,让交付文件的时间信息和实际发送节奏保持一致。

最终成品是一个 Windows 右键菜单工具:在目标文件夹里右键,点击“更新当前文件夹日期为现在”,就能把当前文件夹里的文件时间批量更新到当前时间;如果是图片,还会尽量同步更新 EXIF/XMP 里的日期字段。项目源码和安装包已经放到 GitHub,方便在不同电脑上复用。


1. 起因:为什么改了文件时间,资源管理器还是显示旧日期?

一开始我只是想把当前文件夹内的图片日期改成当前时间。用 PowerShell 修改文件属性后,CreationTimeLastWriteTimeLastAccessTime 都已经变成了当前时间。

但在资源管理器里看,部分图片的“日期”仍然显示为 2026/6/11

后来用 Windows Shell 扩展属性和 ExifTool 检查后才确认:

  • 文件系统日期已经改成功。
  • 资源管理器显示的旧日期来自图片内部元数据。
  • 这些 PNG 文件里旧日期主要存在于 XMP 字段中,例如 CreateDateModifyDateMetadataDateDateTimeOriginal

也就是说,想让资源管理器里的“日期”真正更新,不能只改文件属性,还要改图片内部元数据。


2. 解决方案:PowerShell + ExifTool

最终脚本做了两件事。

第一,更新普通文件属性:

1
2
3
$file.CreationTime = $now
$file.LastWriteTime = $now
$file.LastAccessTime = $now

第二,如果检测到 ExifTool,就额外更新图片常见日期字段:

1
2
3
4
5
6
7
-XMP-xmp:CreateDate
-XMP-xmp:ModifyDate
-XMP-xmp:MetadataDate
-XMP-exif:DateTimeOriginal
-EXIF:DateTimeOriginal
-EXIF:CreateDate
-EXIF:ModifyDate

这样更新后,资源管理器里的“日期”“修改日期”“创建日期”“拍摄日期”都会同步变成当前时间。


3. 做成右键菜单,而不是每次打开命令行

脚本跑通以后,真正影响效率的是入口。

如果每次都要打开 PowerShell、复制路径、运行命令,实际用起来还是麻烦。所以我把它做成了右键菜单工具:

  • 在文件夹空白处右键:更新当前文件夹日期为现在。
  • 对某个文件夹右键:更新此文件夹日期为现在。

安装脚本会把核心 PowerShell 脚本复制到:

1
%LOCALAPPDATA%\UpdateFolderDates\Update-FolderDates.ps1

然后写入当前用户的注册表右键菜单项。这样不需要管理员权限,也不会污染系统目录。


4. Windows 11 新版右键菜单的取舍

这里踩了一个 Windows 11 的坑。

普通注册表方式添加的右键菜单项,通常不会直接出现在 Windows 11 新版右键菜单第一层,而是藏在“显示更多选项”里。

所以我最后保留了两个版本:

版本 特点 适合场景
右键新版菜单栏 保留 Windows 11 新版菜单,不重启资源管理器 想保持系统默认体验
右键经典版菜单栏 切换到经典右键菜单,功能直接显示 想一步点击完成

中间还遇到过一个问题:如果把菜单项错误注册到 Folder\shell,Windows 可能会把它当成文件夹的默认动作,导致双击文件夹不是打开,而是执行脚本。最后的修复方式是删除这个会抢占默认动作的项,并显式恢复 Directory\shell 的默认动作为 none


5. 打包成两份一键安装/卸载文件

为了方便复制到另一台电脑,我把工具打包成两个版本目录,每个目录里只有两个文件:

1
2
安装-批量更新日期右键菜单.bat
卸载-批量更新日期右键菜单.bat

安装包是自包含的:

  • 内置核心 PowerShell 脚本。
  • 安装时自动写入本地工具目录。
  • 自动注册右键菜单。
  • 如果系统有 winget,会尝试自动安装 ExifTool。

卸载包会删除右键菜单和本地脚本。

项目已经同步到 GitHub:

https://github.com/RaymondGuoCGI/update-folder-dates-tool


6. 实际效果

现在我的工作流变成了:

  1. 进入目标文件夹。
  2. 右键空白处。
  3. 点击“更新当前文件夹日期为现在”。
  4. 按 F5 刷新资源管理器。

图片文件的文件属性和内部日期都会更新。对于渲染图、产品图、批量交付文件这类场景,这个小工具能省掉很多重复操作。


总结

这个小工具本身不复杂,但过程里有几个关键点:

  • Windows 资源管理器的“日期”不一定等于文件修改时间。
  • 图片内部 XMP/EXIF 日期会影响资源管理器显示。
  • ExifTool 是处理图片元数据最稳的工具。
  • Windows 11 新版右键菜单和经典右键菜单需要分开考虑。
  • 写注册表右键菜单时,不能误抢文件夹双击默认动作。

这也是我比较喜欢用 Codex 做小工具的原因:需求很具体,路径很清晰,从排查、脚本、右键菜单、打包、GitHub 发布,可以一口气完成闭环。


项目地址: update-folder-dates-tool
发布日期: 2026年6月16日