3

У меня есть пакетный файл с именем «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 ответ1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .