Попробуйте этот быстрый и грязный подход и посмотрите, работает ли он для вас (подходит для меня, но я не тестировал его на системах с другими проигрывателями по умолчанию):
@echo off
setlocal enabledelayedexpansion
REM Get ProgID associated with AVIs
for /f "tokens=3" %%a in ('reg query HKCR\.avi /ve ^| find "REG_SZ"') do set progID=%%a
REM Get open command for that ProgID
for /f "tokens=2*" %%a in ('reg query HKCR\%progID%\shell\open\command /ve ^| find "REG_SZ"') do set progNM=%%b
REM Now we should hopefully have "drive:\full\path\to\player.exe" "%1", so let's chop off the last 5 chars
set progNM=%progNM:~0,-5%
REM Expand wildcards and append filenames after program name
for %%a in (%1) do set progNM=!progNM! "%%~a"
REM Run the program with all the files and hope it won't result in N separate instances bogging down the system!
%progNM%
Сохраните его, например, как Play.bat и назовите его, используя play *.mkv
или аналогичный.
Код пытается найти программу, связанную с AVI, предполагает, что это видеопроигрыватель используется для всех видеоформатов, расширяет что-то вроде * .mkv до «File1.mkv File2.mkv ...» и передает их все в программу. Имейте в виду, что если файлов слишком много, то максимальная длина командной строки обязательно будет превышена (я думаю, что это все еще 8192 символа), но, надеюсь, в этом случае программа все равно запустится с таким количеством полных имен файлов, которое может поместиться.