为什么remove-item文件后new-item,文件的CreationTime属性的时间是一样的?


PowerShell交流中心分类: 文件和注册表为什么remove-item文件后new-item,文件的CreationTime属性的时间是一样的?
0
migou asked 7 年 ago

脚本里先remove-item “c:\test.txt”
start-sleep -s 5
然后new-item “c:\test.txt”
test.txt前后的CreationTime为什么是一致的?

1 Answers
2
Best Answer
Mooser Lee 管理员 answered 7 年 ago

这个是Windows 系统的默认行为,简称文件系统隧道效应
文件系统的meta-info(元数据)默认会在缓存中保持一段时间,即使这个文件被重命名,或者被删除等。一旦文件被重建,它会先在缓存表中搜索,如果存在,就恢复旧的元数据。
缓存保持的时间默认是15秒,该设置可以通过注册表更改:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
你在编程的时候,如果CreationTime时间的缓存影响了你的逻辑,可以自己手动通过.NET方法进行重置。

PS> [IO.File]::SetCreationTime

OverloadDefinitions
-------------------
static void SetCreationTime(string path, datetime creationTime)
migou replied 7 年 ago

解答的很详细,感谢!!