保留 MTS 视频到 MP4 视频的修改日期(文件戳)-Powershell 脚本

保留 MTS 视频到 MP4 视频的修改日期(文件戳)-Powershell 脚本

我一直在寻找解决方案。这个想法很简单:我有一些旧的 MTS 视频,我通过 ffmpeg 将它们转换为 mp4 视频。ffmpeg 和其他替代方案(如 Handbrake)都不会保留原始视频的时间戳。Exiftool没有也可以达到我的目的 :(

我尝试过使用ffmpeg 中的 -map_metadata 标志没有成功以及 'touch -r' 命令,但同样,不能满足我的需要。我尝试了几种解决方案,但似乎都不起作用。最后我找到了“手动”解决方案,我想创建一个 Powershell 脚本来自动化一切。

如图所示,PowerShell有效地修改文件的 CreationTime、LastAccessTime 和 LastWriteTime(后者是我需要的!)。我想要自动化的是:

对于目录(及其子目录)中的每个 MTS 文件

  • 获取该 MTS 文件的 LastWriteTime
  • 将其复制到文件夹中已存在的 MP4 文件的 LastWriteTime

我不知道如何在 Powershell 中做到这一点,我想知道是否有人可以回答这个问题。

在此处输入图片描述

答案1

这应该有效,获取所有项目,将它们成对分组并设置 LastWriteTime 属性

# Get All .mp4 and .mts in folder, group them by basename, and iterate over all of them
Get-ChildItem "C:\Users\jpast\Desktop\videos" | Where-Object Extension -in '.mp4','.MTS' | 
Group-Object BaseName | Where-Object Count -eq 2 | ForEach-Object {
    # Sort Ascending on Extension, mp4 is index 0 and mts is index 1
    $Objects = $_.Group | Sort-Object Extension
    $Objects[0].LastWriteTime = $Objects[1].LastWriteTime
}

相关内容