借用【.bat 批处理】实现同时播放多个视频 · 以PotPlayer播放器为例

突然有这样的需求:同时打开一个文件夹下的多个视频播放任务。如何来实现呢?


理所当然的是想到Potplayer本身可以开多个进程,也就是多开窗口播放,但是经过实验,发现在资源管理器中选取多个视频源并不能实现同时打开并播放!如下图:

开始.bat

想要实现同时打开任务,就要用到批处理中的循环语句FOR,其语法还挺有深度,这里我们使用最基础的不带参数型:

for %%i in (*) do (PotPlayerMini64 %%i)

其中%%i表示取当前路径下的文件,do后面是执行语句!使用PotPlayer可执行exe应用来打开该文件!【PS:我在PATH环境中加了PotPlayer软件路径,因此可直接使用,否则需要写上全路径地址!如:D:\Pot_Player64_1.7.21516_Dev_20210716\PotPlayer64\PotPlayerMini64.exe

好了,准备好文件,如下图所示:
image

把批处理文件放入媒体文件同目录下,我们执行尝试...
发现了两个问题:
.bat批处理执行是阻塞型应用,也就是单任务执行机制,即当上一条指令完全执行完毕才能执行下一条,因此无法实现同时打开的需求!!
㈡ PotPlayer无法打开任意格式的文件,如.bat批处理文件,如下图:
image

完善

针对问题,进行改善:

for %%i in (*.mp4) do (start cmd /k PotPlayerMini64 %%i)

指定需要遍历的文件格式,为mp4,而执行操作是:每次调取单独的cmd命令来打开播放器,这里使用了startcmd命令,加了/k参数,即可以看到cmd窗口中调取指令情况,如图:
image
如果想执行完毕cmd自动关闭cmd窗口,可以换/c。从简的话也可以省略cmd命令,如:

for %%i in (*.mp4) do (start PotPlayerMini64 %%i)

OK!!!基本需求以及达到了。

进一步

还可以拓展...比如批处理文件放在单独的路径下来执行,可以这样修改:

cd ToPlay
for %%i in (*) do (start cmd /k PotPlayerMini64 %%i)

其中的ToPlay文件夹存放待播放的媒体文件。
当然还可以基于参数传入来执行批处理任务,如:

cd %1
for %%i in (*) do (start cmd /k PotPlayerMini64 %%i)

然后在cmd中执行该.bat,如图:
image
【PS】还有一种方法是在资源管理器中将ToPlay文件夹拖放到.bat上松开执行!

总结

现在基本上可以很轻松地实现想要的效果了。当然啦,还能再改善功能,例如可以进一步筛选目录下的某某文件来播放,或者定义每次开启播放器的间隔时长等等。还可以将这些功能包装成GUI可视的窗口应用。。。
有个细节想说明一下,如果cmd这样调用:

PotPlayerMini64 filename

即不加后缀名调用,那么播放器是只开不放的,也没有将该媒体文件加入至播放列表中,要想正常开启并播放则需要加上后缀名。

总之,这个小需求网上有人在问怎么实现,但很少有博文可参考,本人竟然没找到,故此小结了这篇文章,而且可以触类旁通,拓展到其他应用都可以借此方法同时开启并调用某某文件,希望对读者有帮助,感谢!!

posted @ 2022-10-29 15:49  SHARP-EYE  阅读(3033)  评论(1编辑  收藏  举报