PowerShell 根据多个文件的特定日期更改 "Date Modified"
PowerShell to change "Date Modified" base on a specific date for Multiple Files
我正在尝试更改特定文件夹中超过 2K 文件的“修改日期”(LastWriteTime)。所有文件都在同一天修改。但是,它确实有多次。所以,基本上我想要完成的是:
Myfile1.Zip --> 修改日期 = "1/4/2022 12:21 下午" ==> 修改日期 = "1/3/2022 9:00 上午""= 11=]
Myfile2.Zip --> 修改日期 = "1/4/2022 12:25 下午" ==> 修改日期 = "1/3/2022 9:00 上午""= 11=]
意味着所有在 1/4/2021 修改的文件都需要将“Date Modified”显示为 1/3/2021,时间在这里真的无关紧要。
是否可以使用 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 .\path\to\folder\ |Where-Object { $_.LastWriteTime.Date -eq $filterDate }
# update their timestamps
$relevantFiles |ForEach-Object {
$_.LastWriteTime = $targetDateTime
}
取消引用现有 [DateTime]
值上的 Date
属性 会得到午夜的日期,因此无论文件是否更新,比较 $_.LastWriteTime.Date -eq $filterDate
都将起作用凌晨 1 点或下午 6 点,只要是在 1 月 4 日。
我正在尝试更改特定文件夹中超过 2K 文件的“修改日期”(LastWriteTime)。所有文件都在同一天修改。但是,它确实有多次。所以,基本上我想要完成的是:
Myfile1.Zip --> 修改日期 = "1/4/2022 12:21 下午" ==> 修改日期 = "1/3/2022 9:00 上午""= 11=]
Myfile2.Zip --> 修改日期 = "1/4/2022 12:25 下午" ==> 修改日期 = "1/3/2022 9:00 上午""= 11=]
意味着所有在 1/4/2021 修改的文件都需要将“Date Modified”显示为 1/3/2021,时间在这里真的无关紧要。
是否可以使用 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 .\path\to\folder\ |Where-Object { $_.LastWriteTime.Date -eq $filterDate }
# update their timestamps
$relevantFiles |ForEach-Object {
$_.LastWriteTime = $targetDateTime
}
取消引用现有 [DateTime]
值上的 Date
属性 会得到午夜的日期,因此无论文件是否更新,比较 $_.LastWriteTime.Date -eq $filterDate
都将起作用凌晨 1 点或下午 6 点,只要是在 1 月 4 日。