我想转换视频并将其时间设置为与源文件的时间相同。我使用 ffmpeg 批量转换文件夹中的文件
for %%a in ("*.MP4") do ffmpeg -i "%%a" -c:v libx264 -c:a aac "%%~naC.mp4"
pause
然后我有一个 powershell 代码,我用它与 excel 来匹配文件 LastWriteTime
powershell (Get-ChildItem 'P1290526C.mp4').LastWriteTime = (Get-ChildItem 'P1290526.MP4').LastWriteTime
有什么办法可以将这两个代码合并在一起,以便我只使用一个脚本/bat 文件?
非常感谢。
答案1
将 PowerShell 命令放入相同的 for 循环中:
for %%A in ("*.MP4") do (
ffmpeg -i "%%A" -c:v libx264 -c:a aac "%%~nAC.mp4"
powershell -NoP -C "(gi '%%~nAC.mp4').LastWriteTime = (gi '%%A').LastWriteTime"
)
gi
是Get-Item的别名,无需用Get-ChildItem进行迭代。
由于这将为每个转换后的文件调用 powershell,因此以下做法更有效:
让 powershell 完成整个工作
或者在转换所有文件后仅运行一次 powershell