Answers:
尝试这种快速'n'脏方法,看看它是否适合你(对我而言,但我没有在具有不同默认播放器的系统上测试它):
@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个字符),但希望在这种情况下,程序仍然可以使用尽可能多的完整文件名启动。
for /?
会告诉你关于令牌选项的信息。它基本上从完整字符串返回第3个标记(大致是空格分隔的字符串组件)。如果它仍然不起作用,请告诉我系统上两个reg查询命令的确切输出(记得在第二次调用中将%progID%替换为第一次返回的实际ID)。
您可以创建一个只包含要播放的文件名的cmd文件(没有'start'命令),即playlist.cmd
episode01.mkv
episode02.mkv
episode03.mkv
episode04.mkv
当您运行此文件时,它将打开与文件类型关联的任何播放器中的所有媒体文件。问题是,它开始一个接一个地播放所有文件,而不是等待它们完成播放(这当然不是你想要的 - 至少VLC为我做了这个)。
player.exe name1 name2 ...
。这正是我需要的,但不知道球员的名字
reg query
返回本地化数据。在我的电脑上,reg query HKCR\.avi /ve
返回这一行:(Výchozí) REG_SZ WMP11.AssocFile.AVI
。但更糟糕的问题是第一个for循环不需要一次迭代(即使是fith fixed find命令)。这是我不知道如何解决的问题。什么"tokens=3"
意思?