¿Cómo ejecutar un archivo por lotes de múltiples argumentos desde un vbscript en CMD?

¿Cómo ejecutar un archivo por lotes de múltiples argumentos desde un vbscript en CMD?

Tengo un archivo por lotes llamado "ClockTalk.bat" que tiene 3 argumentos:

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

Utilizo un vbscript llamado "HideBat.vbs" sólo para ejecutar el archivo por lotes con la pantalla DOS oculta:

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

y lo ejecuto desde la línea de comando así:

HideBat.vbs 12 10 am

y siempre me da un error: El sistema no puede encontrar el archivo especificado

o si lo ejecuto así:

HideBat.vbs "12 10 am"

siempre me da un error: Subíndice fuera de rango

Entonces, ¿qué está mal en mis archivos y cómo ejecutar el archivo por lotes desde vbscript y pasarle los tres argumentos desde la línea de comando?

Respuesta1

Olvidaste tener en cuenta los espacios entre argumentos. Entonces está intentando ejecutar HideBat.vbs1210am, que no es un archivo legítimo, por lo que aparece el error "El sistema no puede encontrar el archivo especificado".

Cuando lo ejecuta, HideBat.vbs "12 10 am"lo hace de modo que proporcione 12 10 amcomo un argumento único. Entonces, cuando el script VBS hace referencia al segundo y tercer argumento de la matriz, no existen, por lo que aparece el error "Subíndice fuera de rango".

Pruebe algo como:

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

...para insertar los espacios después del comando y entre los argumentos.

información relacionada