Powershell脚本,用于通过文件名更改目录中每个文件的时间

时间:2017-10-04 10:41:54

标签: powershell

我有几千张照片&目录中的视频,我想要更改所有lastAccess,lastWrite,... date。

我的文件全部命名为'IMG_20170101_120000.png'。

我想为每个文件更改lastAccessDate,因为日期在文件名中。

当然还有其他方法,但我发现了一些在powershell中运行它的语句

$(ls IMG_20170101_120000.png).LastAccessTime = (Get-Date "2017-01-01T12:00:00")

但现在我想自动为目录中的所有这些文件执行此操作。

有人可以帮助我吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

此代码应该可以执行您想要的操作。

$Files = Get-ChildItem -Path $YourPath -Filter "*.png"
Foreach($File in $Files){
    try{
    $FileName = $File.BaseName
    $FileName =$FileName.Replace("IMG_","")
    $FileName =$FileName.Replace("_","")

    $File.LastAccessTime = [datetime]::ParseExact("$($filename.Substring(0,4))-$($filename.Substring(4,2))-$($filename.Substring(6,2)) $($filename.Substring(8,2)):$($filename.Substring(10,2))", "yyyy-MM-dd HH:mm", $null)

    }catch{"Wrong filename"}
}

请查看powershell文档,因为您的代码难以阅读,无法使用。