![如何在 CMD 中从 vbscript 运行多参数批处理文件?](https://linux22.com/image/1466309/%E5%A6%82%E4%BD%95%E5%9C%A8%20CMD%20%E4%B8%AD%E4%BB%8E%20vbscript%20%E8%BF%90%E8%A1%8C%E5%A4%9A%E5%8F%82%E6%95%B0%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我有一个名为“ClockTalk.bat”的批处理文件,它有 3 个参数:
nircmd.exe speak text "Attention it's now %1 %2, %3 Hours remain to the end of the day" -3
我仅使用名为“HideBat.vbs”的 vbscript 来运行带有隐藏 dos 屏幕的批处理文件:
'HideBat.vbs
CreateObject("Wscript.Shell").Run "ClockTalk.bat" & WScript.Arguments(0) & WScript.Arguments(1) & WScript.Arguments(2), 0, False
我从命令行运行它,如下所示:
HideBat.vbs 12 10 am
并且总是出现错误:系统找不到指定的文件
或者如果我像这样运行它:
HideBat.vbs "12 10 am"
它总是给我一个错误:下标超出范围
那么我的文件出了什么问题,以及如何从 vbscript 运行批处理文件并从命令行向它传递三个参数?
答案1
您忘记考虑参数之间的空格。因此它试图运行HideBat.vbs1210am
,而这不是合法文件,因此您会收到“系统找不到指定的文件”错误。
当您运行它时,HideBat.vbs "12 10 am"
您会将其12 10 am
作为单个参数提供。因此,当 VBS 脚本引用数组中的第 2 和第 3 个参数时,它们不存在,因此您会收到“下标超出范围”错误。
尝试以下方法:
CreateObject("Wscript.Shell").Run "ClockTalk.bat " & WScript.Arguments(0) & " " & WScript.Arguments(1) & " " & WScript.Arguments(2), 0, False
...在命令后和参数之间插入空格。