我正在重新轉換舊文件,並使用以下程式碼將元資料從舊文件複製到新文件:
for %%f in (*.mp4) do ffmpeg -i "%%f" -i "%%~nf_1.mp4" -map 1 -c copy -map_metadata 0 -map_metadata:s:v 0:s:v -map_metadata:s:a 0:s:a "%%~nf_.mp4"
但是,這不會複製檔案系統元數據,例如修改日期。有什麼方法可以複製該元資料嗎?有什麼建議嗎?
謝謝。
PS 我使用的是 Windows 10
答案1
複製 ffmpeg 的元資料是與視訊關聯的資料。修改日期是檔案的屬性,由 Windows 管理,但不受 ffmpeg 管理。
如果您已將檔案從 資料夾 轉換C:\dirsource
為 資料夾D:\dirtarget
,則下列 PowerShell 腳本會將修改日期從來源複製到目標:
Get-ChildItem "C:\dirtarget\" *.mp4 | ForEach-Object {
$_.LastWriteTime = (Get-Item ("C:\dirsource\"+$_.Name)).LastWriteTime
}
您也可以對屬性CreationTime
和執行相同的操作LastAccessTime
。
建立一個名為的檔案myname.ps1
並將其複製到上述文字中。啟動 PowerShell 會話,使用cd
定位到包含腳本的資料夾,然後執行命令.\myname.ps1
。
如果您收到一條錯誤訊息“無法加載,因為在此系統上停用了運行腳本”,請在 PowerShell 視窗中執行以下命令,然後重複上述操作:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted