Como executar um arquivo em lote com vários argumentos a partir de um vbscript no CMD?

Como executar um arquivo em lote com vários argumentos a partir de um vbscript no CMD?

Eu tenho um arquivo em lote chamado "ClockTalk.bat" que possui 3 argumentos:

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

eu uso um vbscript chamado "HideBat.vbs" apenas para executar o arquivo em lote com tela do DOS oculta:

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

e eu executo na linha de comando assim:

HideBat.vbs 12 10 am

e sempre me dá um erro: O sistema não consegue encontrar o arquivo especificado

ou se eu executar assim:

HideBat.vbs "12 10 am"

sempre me dá um erro: Subscrito fora do intervalo

Então, o que há de errado em meus arquivos e como executar o arquivo em lote do vbscript e passar os três argumentos para ele na linha de comando?

Responder1

Você esqueceu de levar em conta os espaços entre os argumentos. Então ele está tentando executar o HideBat.vbs1210am, que não é um arquivo legítimo, então você recebe o erro "O sistema não consegue encontrar o arquivo especificado".

Quando você o executa, HideBat.vbs "12 10 am"você está fazendo isso para fornecer o 12 10 amargumento único. Portanto, quando o script VBS faz referência ao segundo e terceiro argumentos na matriz, eles não existem e você obtém o erro "Subscrito fora do intervalo".

Tente algo como:

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

...para inserir os espaços após o comando e entre os argumentos.

informação relacionada