我使用这个批处理在Win7中截取一堆mp4文件的开头6秒,以创建新文件。它工作得很好,但是输出文件的日期是新的。如何保存原始日期?但是我不想重新编码mp4文件,因为它们太多太慢了。感谢您的回复。
对于%%a in ("*.mp4"),执行ffmpeg -i "%%a“-ss 6 -vcodec copy -acodec copy "newfiles\%%~na.mp4”
发布于 2019-02-03 18:10:07
谢谢你的帮助,@mayudong,但我对powershell一无所知,也无法理解。最后我用AHK打通了:
SetWorkingDir g:\
#m::
Loop, %A_WorkingDir%\*.mp4
{
if( InStr(A_LoopFileName,"news")=1 or InStr(A_LoopFileName,"today")=1 ){
FileGetTime,mt,% A_LoopFileLongPath
runwait,ffmpeg -y -i "%A_LoopFileLongPath%" -ss 8 -vcodec copy -acodec copy "g:\+temp\%A_LoopFileName%"
FileSetTime,mt,g:\+temp\%A_LoopFileName%
}
}
return
发布于 2021-01-10 20:28:41
您可以使用powershell更改文件日期
powershell (ls 'out.mp4').CreationTime = (ls 'in.mkv').CreationTime
powershell (ls 'out.mp4').LastWriteTime = (ls 'in.mkv').LastWriteTime
powershell (ls 'out.mp4').LastAccessTime = (ls 'in.mkv').LastAccessTime在您的示例中,它将如下所示:
for %%a in ("*.mp4") do (
ffmpeg -i "%%a" -ss 6 -vcodec copy -acodec copy "newfiles\%%~na.mp4"
powershell ^(ls 'newfiles\%%~na.mp4'^).CreationTime = ^(ls ''%%a'^).CreationTime
powershell ^(ls 'newfiles\%%~na.mp4'^).LastWriteTime = ^(ls '%%a'^).LastWriteTime
powershell ^(ls 'newfiles\%%~na.mp4'^).LastAccessTime = ^(ls '%%a'^).LastAccessTime
)https://stackoverflow.com/questions/54456493
复制相似问题