FFmpeg multiple commands (convert, then join)

Have you tried:

for %i in (*.mp4) do ffmpeg -y -i "%i" -vf scale=1280:720 -crf 17 -c:v libx265 "%~ni.mp4" & ffmpeg -f concat -safe 0 -i xmylist.txt -crf 17 -c copy "%~ni.mp4"

or this in a batch:

for %%i in (*.mp4) DO (

ffmpeg -y -i "%%i" -vf scale=1280:720 -crf 17 -c:v libx265 "%%~ni.mp4"

ffmpeg -f concat -safe 0 -i xmylist.txt -crf 17 -c copy "%%~ni.mp4"

)

although paying attention to what you are trying to do is it good to do it this way being you are concatenating the same file that is already a single file?

being you cannot use more than one set of () in a for loop here is a possible solution using 3 batch files:

You use start command because if you just put it in there it will run both batches and close instantly.

Batch 1:

start "Batch2.bat"

start "Batch3.bat"

Batch 2:

for %%i in (*.mp4) DO ffmpeg -y -i "%%i" -vf scale=1280:720 -crf 17 -c:v libx265 "%%~ni.mp4"

Batch 3:

for %%i in (*.mp4) DO ffmpeg -f concat -safe 0 -i xmylist.txt -crf 17 -c copy "x1.mp4"

Please let me know:). I can look into a much more advanced cmd at home later tonight to help you out with this.