MPlayer (Win32) 的批处理脚本

目标是能处理一到两个参数,这样便可以从资源管理器中把文件拖到它的图标上播放了。带一个参数时则是单个视频文件,两个参数则认为一个是视频文件,一个是字幕。要点:

  • 从资源管理器拖出时,若路径或文件名有空格,则参数会被用双引号引起来,因此比较的时候应改用单引号: if '%2'==''
  • echo %2| findstr ... 这里要注意'|'符号之前不能有空格,否则会成为 echo 的参数
  • errorlevel 环境变量记录了最后一条命令的返回值
  • 带两个参数时 %1 和 %2 哪一个是字幕文件是按文件名排序的,而不是在资源管理器中鼠标点击的顺序

下面便是最终的代码,在桌面上为它建个快捷方式,在资源管理器中选中视频文件和字幕文件,拖到它的图标上就可以啦,用了一段时间,效果还不错。

@rem mp.bat - batch file for mplayer
@rem"mplayer_dir" 环境变量改成你自己的,把这个文件放到桌面,或
@rem 建一个快捷方式。在资源管理器中选择电影文件和字幕文件(如果有的
@rem 话),拖到 mp.bat 的图标上就行了。只能识别 ".sub"".srt" 的
@rem 字幕,其他的可以自己修改。
@rem wayman Jun. 6, 2005

@echo off

set mplayer_dir=e:\app\mplayer

@rem 用单引号保证能正确处理路径和文件名含空格的情况
@rem 同样的道理,%1%2 也不要带双引号
if '%2'=='' goto nosub

set file=%1
set sub=%2

@rem 注意 %2 后面不要空格!
@rem 不能写 \.srt$,因为 %2 最后一个字符可能是引号(当路径上有空格)
echo %2| findstr /i /r "\.srt"
if %errorlevel% EQU 0 goto ok

echo %2| findstr /i /r "\.sub"
if %errorlevel% EQU 0 goto ok

rem exchange file and subtitle
set file=%2
set sub=%1
goto ok

:ok
%mplayer_dir%\mplayer.exe -fs %file% -sub %sub%
set file=
set sub=
goto end

:nosub
echo subtitle unspecified!
%mplayer_dir%\mplayer.exe -fs %1
goto end

:end
set mplayer_dir=