目标是能处理一到两个参数,这样便可以从资源管理器中把文件拖到它的图标上播放了。带一个参数时则是单个视频文件,两个参数则认为一个是视频文件,一个是字幕。要点:
- 从资源管理器拖出时,若路径或文件名有空格,则参数会被用双引号引起来,因此比较的时候应改用单引号: 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=