我一直在寻找解决方案。这个想法很简单:我有一些旧的 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
}