PowerShell 根据多个文件的特定日期更改"Date Modified"



我正在尝试更改;"修改日期";(LastWriteTime(在特定文件夹中超过2K个文件。所有文件都在同一天被修改。然而,它确实有多次。所以,基本上,我想要实现的是:

Myfile1.Zip->修改日期=";2022年1月4日下午12:21"==>修改日期=";2022年1月3日上午9:00";

Myfile2.Zip->修改日期=";2022年1月4日下午12:25"==>修改日期=";2022年1月3日上午9:00";

这意味着在2021年1月4日修改的所有文件都需要显示";"修改日期";2021年1月3日,时间在这里真的无关紧要。

是否可以使用PowerShell脚本进行批量更改?我一点也不熟悉。

您可以检查Get-ChildItem返回的文件系统对象上现有的LastWriteTime属性,然后为其分配一个新值:

# define date/time variables
$filterDate = (Get-Date -Day 4 -Month 1 -Year 2022).Date
$targetDateTime = Get-Date -Day 3 -Month 1 -Year 2022 -Hour 9 -Minute 0 -Second 0
# locate and filter relevant files
$relevantFiles = Get-ChildItem -Path .pathtofolder |Where-Object { $_.LastWriteTime.Date -eq $filterDate }
# update their timestamps
$relevantFiles |ForEach-Object {
$_.LastWriteTime = $targetDateTime
}

取消对现有[DateTime]值的Date属性的引用会使日期处于午夜,因此无论文件是在凌晨1点还是下午6点更新,只要是在1月4日,比较$_.LastWriteTime.Date -eq $filterDate都会起作用。

最新更新