Windows资源管理器中“修改日期”的文件夹规则

88

Windows资源管理器是如何确定文件夹的“修改日期”字段的呢?[顺便说一下:我知道这是从资源管理器特定的角度来问,但其行为可能对编码搜索/排序类型的活动有用]

是否有一个明确的描述可以阐述这一点——在Microsoft、MSDN、Google和Stack Overflow的搜索都没有成功。

个人的实验似乎表明,在一个文件夹树中:

  1. 当文件夹/文件被添加/删除时,会更新包含文件夹的修改日期。
  2. 当文件内容被修改时,包含文件夹不受影响。

然而,我正在查看一些似乎不符合这些基本规则的目录——沿着树运行,我有(以DD/MM/YYYY格式表示的日期):

folder     (date created:  2/2/2006, date modified: 2/3/2006)
  folder   (date created:  2/2/2006, date modified: 2/3/2006)
    folder (date created:  2/2/2006, date modified: 1/6/2009)
      file (date created: 27/3/2009, date modified: 2/2/2006)

3
通过实验,删除单个文件有时会影响父文件夹的修改日期,有时不会,有时会有约60秒的延迟。硅棒之家。 - crokusek
@crokusek 你确定不是资源管理器没有立即刷新吗?尝试使用dir或F5。它总是立即更新的。 - Roman Starkov
在本地无法重现问题后,我测试了一个连接到远程Windows Server 2012文件系统(如\MachName\C$\SomeDir)的本地文件浏览器(Win 10 v1703),并验证了我的原始评论。在这种情况下,使用本地文件浏览器或远程桌面文件浏览器删除文件不会“立即”在父文件夹中显示更新(多个新的文件浏览器+F5,多个窗口,甚至PowerShell dir)。但是,远程桌面文件浏览器确实显示了更新。必须存在某些错误的目录信息缓存。 - crokusek
显然,导致文件夹修改日期更改的另一个“规则”是仅仅使用Word或Excel打开(而不保存或更改)文档。请看这里:https://superuser.com/questions/808831/how-can-i-disable-changes-to-folder-last-modified-date - bgmCoder
2个回答

83

免责声明:我在Windows 10上亲自测试了所有这些操作。我无法找到一个权威的来源记录这些行为。完全有可能我在某个地方犯了错误。

以下操作会更新文件夹的最后修改时间

  • 在目标文件夹中直接新建文件或文件夹
  • 在目标文件夹中直接重命名文件或文件夹
  • 在目标文件夹中直接删除文件或文件夹
  • 创建/删除/重命名硬链接-与文件相同
  • 创建/删除/重命名文件/文件夹符号链接
  • 创建/删除/重命名目录联接

以下操作不会更新其最后修改时间:

  • 直接在目标文件夹中修改文件内容
  • 编辑目标文件夹中包含的符号链接或联接的目标
  • 文件的或子文件夹的创建/修改日期更改
  • 编辑直接子项(隐藏/档案/系统)的基本属性
  • NTFS压缩/加密更改直接子项的属性
  • 在子文件夹中发生的任何事情-字面上的任何事情
  • 更改文件夹本身的属性
  • 更改文件夹本身的所有者/ACL
  • 直接子项的所有者或ACL更改
  • 如果文件夹是目录联接,更改目标
  • 对直接子文件添加/删除备用数据流

7
谢谢,根据我的理解(虽然对NTFS了解不深但对FAT32有一些了解),这表明一个文件夹可以被解释为一个“文件”,其数据包含了所包含的文件/子文件夹的名称和指针,但不包含它们的元数据,因此只有名称或指针的修改会更新修改日期。我猜想网络共享的NTFS也是如此,但没有进行过确认。 - Tobias Kienzler
2
@TobiasKienzler 是的,我认为这是一个很好的概括方式。 - Roman Starkov
5
太棒了,谢谢。从某种意义上讲,这是有道理的,尽管有时我希望文件/子文件夹的修改也会修改文件夹日期,这将使变更检测变得更容易... - Tobias Kienzler
1
附加:写入目录的备用数据流会更新最后修改时间。 - Dark Daskin
5
真是令人惊讶,我可以重命名文件夹而修改日期不会改变。这违反了最少惊讶原则。 - AriesConnolly
@AriesConnolly 好的,重命名文件也不会更新修改时间。我认为这很合理。(这是特定于Windows吗?) - apple apple

34

1
1:D:\NTFS1 - 创建的文件夹相同,但修改时间戳会更改。 2:D:\NTFS1\NTFS2 - 创建的文件夹和修改的文件夹都保持不变。感谢微软,像往常一样清晰易懂! :) - El Ronnoco
1
我认为这很清楚。在移动文件夹时,您正在引用它们的示例。如果您移动NTFS2,则不会创建新文件夹,因此创建日期不会更改,也不会修改文件夹,因此修改日期不会更改。由于您将NTFS2移入NTFS1中,因此实际上正在修改NTFS1,因此其修改日期会更改。我认为这完全合乎逻辑。 - Steve Hiner
7
当你说“修改时间可以通过文件系统选项禁用”时,我找不到任何证据支持这一说法。您是否指的是访问时间?这里有另一个非常具体的MSDN文章介绍了修改时间:“文件时间戳的唯一保证是当进行更改的句柄关闭时正确反映文件时间。” https://msdn.microsoft.com/en-us/library/windows/desktop/ms724290(v=vs.85).aspx - Ron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接