becauseim, Если более понятно решение на vbs, используйте лучше его. Что касается моего варианта с cmd, то его, наверно, нужно модифицировать примерно вот так:
@echo off
echo ".mp3$.wav$.aac$" | findstr /i /c:"%~x1$" >nul && (echo %1 > "%~f0.dat" & exit /b)
if not exist "%~f0.dat" (echo "" & exit /b)
setlocal
set /p a=<"%~f0.dat"
echo ".mov$.mp4$.mts$" | findstr /i /c:"%~x1$" >nul || exit /b
if not defined a exit /b
ffmpeg -i %1 -i %a:~0,-2% -c:v copy -map 0:v:0 -map 1:a:0 -acodec aac -ab 128K -shortest "%~dpn1_replaced.mp4"
del /q "%~f0.dat"
То есть сначала задаём аудио, потом видео. Чтобы прийти к такому решению, нужно в командной строке посмотреть вывод "if /?", "call /?", "findstr /?", "help del", ну и гуглить, по поводу ffmpeg тоже. И знание, что в mp4 в качестве аудио может быть только aac должно быть, а в качестве видео - только h.264 или h.265, насколько помню. Если интересует контейнер для любых форматов аудио и видео, то в таком случае можно использовать .mkv. Правда, замечу, что мой SmartTV на длинных видео не позволяет для контейнера .mkv перемещаться по записи, поэтому использую .ts, но на совсем длинных видео и он не помогает. Протестировал, но не во всех режимах. С wav работает у меня. Общая рекомендация: запускайте только те скрипты, работа которых после прочтения полностью понятна. Особенно касается скриптов на PowerShell.