@echo off
SetLocal EnableDelayedExpansion
title %~n0

if "%~1"=="" ( echo ERROR: NO INPUT & echo  & pause & goto :eof ) else (
if NOT "%cd%\"=="%~dp1" cd /d "%~dp1"
)

:: path to ffmpeg
set "ffmpeg=C:\ffmpeg\bin\ffmpeg.exe"

:: default output subfolder. change to "subfolder=" to disable
set "subfolder=mkv"

:: extension
set "ext=mkv"

:EnterPath
set p=
echo.
set /p p="output path (default %subfolder%) "
for %%F in ("!p!") do (
	set "outfolder=%%~dpnF"
	set openfolder = true
	goto :ConformPath
)

:ConformPath
if "!outfolder!"=="" (
	for %%A in (%subfolder%) do ( 
			set "outfolder=%subfolder%\"
			goto :Checkoutfolder
		)
	) else (
	if not "!outfolder:~-1!"=="\" (
		if "!outfolder:~-1!"=="/" set "outfolder=!outfolder:~0,-1!"
		set "outfolder=!outfolder!\"
	)
)

:Checkoutfolder
if not "!outfolder!"=="" ( if not exist "!outfolder!" mkdir "!outfolder!")

:CountFiles
for %%F in (%*) do ( if "!total!"=="" ( set total=1) else ( set /a total=!total!+1))

:ProcessFiles
for %%F in (%*) do (
	set filters=
	
	if "!current!"=="" ( set current=1) else ( set /a current=!current!+1)
	title %~n0^:  ^>  !current!/!total! "%%~nxF"
	echo. & echo ^> !current!/!total! "%%~F" "%%~nF.%ext%"

	set "postfix="
	if exist "!outfolder!\%%~nF.%ext%" CALL :Addpostfix "!outfolder!\%%~nF.%ext%"

	:ffmpeg
	"%ffmpeg%" -i "%%~F" -c copy "!outfolder!%%~nF!postfix!.%ext%"
)
title %~n0^:  ^>  COMPLETED
if defined openfolder explorer "!outfolder!"
timeout /t 10
goto :eof

:Addpostfix
:: add numeric postfix to files if already exist
for /L %%N in (1,1,1000) do ( if not exist "%~dpn1_%%N%~x1" ( set "postfix=_%%N" & goto :eof ))
goto :eof