Wie führe ich eine Batchdatei mit mehreren Argumenten aus einem VBScript in CMD aus?

Wie führe ich eine Batchdatei mit mehreren Argumenten aus einem VBScript in CMD aus?

Ich habe eine Batchdatei namens „ClockTalk.bat“, die drei Argumente hat:

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

ich verwende ein VB-Skript namens „HideBat.vbs“ nur, um die Batchdatei mit verstecktem DOS-Bildschirm auszuführen:

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

und ich führe es von der Befehlszeile aus wie folgt aus:

HideBat.vbs 12 10 am

und ich erhalte immer die Fehlermeldung: „Das System kann die angegebene Datei nicht finden.“

oder wenn ich es so ausführe:

HideBat.vbs "12 10 am"

es gibt mir immer einen Fehler: Index außerhalb des gültigen Bereichs

Was ist also falsch an meinen Dateien und wie führe ich die Batchdatei aus dem VB-Skript aus und übergebe ihr die drei Argumente aus der Befehlszeile?

Antwort1

Sie haben vergessen, Leerzeichen zwischen den Argumenten zu berücksichtigen. Es wird also versucht, auszuführen HideBat.vbs1210am, was keine legitime Datei ist, und Sie erhalten den Fehler „Das System kann die angegebene Datei nicht finden“.

Wenn Sie es ausführen, während HideBat.vbs "12 10 am"Sie es erstellen, geben Sie es 12 10 amals einzelnes Argument an. Wenn das VBS-Skript also auf das 2. und 3. Argument im Array verweist, existieren diese nicht und Sie erhalten den Fehler „Index außerhalb des gültigen Bereichs“.

Versuchen Sie etwas wie:

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

... um die Leerzeichen nach dem Befehl und zwischen den Argumenten einzufügen.

verwandte Informationen