@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