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 am
argumento ú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.