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

3

Eu tenho um arquivo de lote chamado "ClockTalk.bat" que tem 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 a ocultação da tela:

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

e eu o executo a partir da linha de comando assim:

HideBat.vbs 12 10 am

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

ou se eu rodar 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 a partir da linha de comando?

    
por Black Block 17.09.2015 / 02:54

1 resposta

1

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

Quando você o executa como HideBat.vbs "12 10 am" , está fazendo com que você forneça o 12 10 am como um único argumento. Portanto, quando o script VBS faz referência ao segundo e terceiro argumentos na matriz, eles não existem e, portanto, 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.

    
por 17.09.2015 / 03:15