gpt4 book ai didi

powershell - 如何使用Powershell递归强制文件夹时间戳?

转载 作者:行者123 更新时间:2023-12-03 00:58:15 25 4
gpt4 key购买 nike

在PowerShell中,我使用以下脚本:

$item =  Get-ChildItem -force -recurse | Where-Object {! $_.PSIsContainer} 
foreach($object in $item)
{
$object.CreationTime=("31 December 2019 23:59:59")
$object.LastWriteTime=("31 December 2019 23:59:59")
$object.LastAccessTime=("31 December 2019 23:59:59")
}

而且它仅更改文件的时间戳,但对文件夹没有影响。我如何解决它,以便哪个文件夹的时间戳也要更新?
非常感谢。

最佳答案

因为在您的代码中您正在使用| Where-Object {! $_.PSIsContainer}过滤出目录,所以该函数不会对文件夹执行任何操作。

您可以使用以下方式简化代码:

$date = Get-Date -Year 2019 -Month 12 -Day 31 -Hour 23 -Minute 59 -Second 59

Get-ChildItem -Path 'D:\Test' -Force -Recurse | ForEach-Object {
$_.CreationTime = $date
$_.LastWriteTime = $date
$_.LastAccessTime = $date
}

请注意,rootfolder(在本示例中为 D:\Test)本身不会受到影响,只有内的所有文件和文件夹 都会获得新的时间戳。

至于关于LastAccessTime不受影响的问题:

Windows在资源管理器中列出时,将自动更新目录上的LastAccessTime。这是由注册表设置处理的。
通过将此注册表项设置为1,可以关闭该功能。
(默认值为0)

列出目录时,NTFS会更新它检测到的每个目录上的上次访问时间戳记,并将每次更改记录在NTFS日志中。 列出目录时,NTFS不会更新上次访问的时间戳,也不会在NTFS日志中记录时间戳的更新。
禁用,自动更新目录上的LastAccessTime:
Set-ItemProperty -Path 'HKLM:SYSTEM\CurrentControlSet\Control\FileSystem' -Name NtfsDisableLastAccessUpdate -Value 1 -Type DWord

(重新)启用默认行为:
Set-ItemProperty -Path 'HKLM:SYSTEM\CurrentControlSet\Control\FileSystem' -Name NtfsDisableLastAccessUpdate -Value 0 -Type DWord

NtfsDisableLastAccessUpdate的可能值
0 - User Managed, Last Access Updates Enabled
1 - User Managed, Last Access Updates Disabled
2 - System Managed, Last Access Updates Enabled
3 - System Managed, Last Access Updates Disabled

尽管在Windows 10中,这些值已更改为负值(十六进制):
0x80000000 - User Managed, Last Access Updates Enabled
0x80000001 - User Managed, Last Access Updates Disabled
0x80000002 - System Managed, Last Access Updates Enabled
0x80000003 - System Managed, Last Access Updates Disabled

LastAccessTime

希望能有所解释

关于powershell - 如何使用Powershell递归强制文件夹时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59575813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com