Я хотел бы конвертировать видео и установить время на них, чтобы они были такими же, как из исходного файла. Я использую пакет для преобразования файлов в папке с 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 ответ1

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 только один раз после преобразования всех файлов

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .