双击并从VBscript中打开未定义的文件

双击并从VBscript中打开未定义的文件,vbscript,Vbscript,在Windows资源管理器中双击.mp3文件时,我想使用mpg123.exe以静默方式打开.mp3文件。为此,我编写了一个VBScript,如下所示,并通过Open with将我的VBScript分配给.mp3文件,从而更改了播放.mp3文件的默认程序→ 选择默认程序。我的脚本在命令行(cmd.exe)中运行良好,但当双击.mp3文件时,我会收到一条错误消息,即双击.mp3文件在Windows中不是可执行文件。这是我的VBScript,请告诉我哪里做错了 if Wscript.arguments

在Windows资源管理器中双击.mp3文件时,我想使用
mpg123.exe
以静默方式打开.mp3文件。为此,我编写了一个VBScript,如下所示,并通过Open with将我的VBScript分配给.mp3文件,从而更改了播放.mp3文件的默认程序→ 选择默认程序。我的脚本在命令行(
cmd.exe
)中运行良好,但当双击.mp3文件时,我会收到一条错误消息,即双击.mp3文件在Windows中不是可执行文件。这是我的VBScript,请告诉我哪里做错了

if Wscript.arguments.count = 0 then
  WScript.quit
else
  strSoundFile = WScript.Arguments.Item(0)
end if

Set objShell = CreateObject("Wscript.Shell")

strCommand = "mpg123.exe -q " & chr(34) & strSoundFile & chr(34)

objShell.Run strCommand, 0, True 

为什么不将mp3文件与mpg123.exe关联,并设置相关参数(例如:-q“%1”)


因为我找不到一个值得注意的现有例子,所以我为您准备了一个例子。(已测试可在带有mpg123.exe的Windows 7上工作)。回复过于形象化,无法在这里发布。我希望它能对您有所帮助。

我如何通过“打开->选择默认程序…”传递开关-q等参数?只接受不带开关-q的mpg123.exe。另外,我不想使用批处理文件(.bat),因为它会显示命令shell。也许,可以在vbscript中执行.bat文件来解决问题(如果是这样,怎么做?)我在vbscript中哪里做错了?请提供帮助。@user108631如果要使用参数启动程序,需要修改注册表中的文件关联。请看一个例子。我已经更新了我的答案,添加了一个链接,指向我为您模拟的一个快速示例:感谢Ansgar,特别是Damien的详细回答。我按照Damien的指示做了;出现了一个命令shell窗口,不久就消失了。我没有将.mp3文件与.bat文件进行关联的原因是,它会弹出命令shell窗口,而您的注册表命令也会弹出该窗口:cmd.exe/c start/min“mp3:%1”c:\MPG 123\MPG123.exe“-q“%1”。具体来说,我正在寻找防止弹出shell命令的解决方案。如果有任何修改,请提供帮助。