对于 Windows 10 上的 PowerShell 命令,我遇到了一个奇怪的行为。
要更改文件的创建日期,我使用:
Get-ChildItem C:\testFile1.txt | % {$_.CreationTime = '01/11/2005 06:00:36'}
要更改文件夹的创建日期,我使用:
Get-Item C:\testFolder1 | % {$_.CreationTime = '01/11/2004 22:13:36'}
这两个命令在系统分区 C:\ 或桌面上定期运行良好。
如果该文件夹存在于外部 USB 闪存驱动器上,情况就不同了。
(PS 更改文件时间戳的命令仍然在外部 USB 闪存驱动器上运行。)
假设我尝试更改外部 USB 闪存驱动器上文件夹(不是文件)的创建日期:
Get-Item U:\testFolder1 | % {$_.CreationTime = '01/11/2002 06:00:36'}
我收到此错误消息:
异常设置“CreationTime”:“进程无法访问文件 'U:\testFolder1',因为它正被另一个进程使用。” 在行:1 字符:31 + ... et-Item U:\testFolder1 | % {$_.CreationTime = '01/11/2002 06:00:36'} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], SetValueInvocationException +fullyQualifiedErrorId : ExceptionWhenSetting
进一步挖掘,我意识到该进程是 Windows 10 的文件资源管理器,它阻止我更改时间戳。只要我不打开文件资源管理器,我就可以使用 PowerShell 更改 USB 闪存驱动器上文件夹的创建日期。
有没有像 .Dispose() 这样的方法来阻止 Windows 10 的文件资源管理器锁定文件夹,而无需每次都关闭文件资源管理器?