Как запустить пакетный файл с несколькими аргументами из vbscript в CMD?

Как запустить пакетный файл с несколькими аргументами из vbscript в CMD?

У меня есть пакетный файл под названием «ClockTalk.bat», который имеет 3 аргумента:

nircmd.exe speak text "Attention it's now %1 %2, %3 Hours remain to the end of the day" -3

Я использую vbscript под названием «HideBat.vbs» только для запуска пакетного файла со скрытым экраном 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-й аргументы в массиве, они не существуют, и поэтому вы получаете ошибку «Subscript out of range».

Попробуйте что-то вроде:

CreateObject("Wscript.Shell").Run "ClockTalk.bat " & WScript.Arguments(0) & " " & WScript.Arguments(1) & " " & WScript.Arguments(2), 0, False

...чтобы вставить пробелы после команды и между аргументами.

Связанный контент