CMD の vbscript から複数の引数を持つバッチ ファイルを実行するにはどうすればよいでしょうか?

CMD の vbscript から複数の引数を持つバッチ ファイルを実行するにはどうすればよいでしょうか?

「ClockTalk.bat」というバッチ ファイルがあり、3 つの引数があります。

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

非表示の DOS 画面でバッチ ファイルを実行するためだけに、「HideBat.vbs」という VBScript を使用します。

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

そして、次のようにコマンドラインから実行します。

HideBat.vbs 12 10 am

そしていつもエラーが発生します: システムは指定されたファイルを見つけることができません

または、次のように実行します:

HideBat.vbs "12 10 am"

常にエラーが発生します: 添え字が範囲外です

では、私のファイルの何が間違っているのでしょうか。また、vbscript からバッチ ファイルを実行し、コマンド ラインから 3 つの引数を渡すにはどうすればよいのでしょうか。

答え1

引数間のスペースを考慮するのを忘れました。そのため、正当なファイルではない を実行しようとするHideBat.vbs1210amため、「指定されたファイルが見つかりません」というエラーが発生します。

実行すると、単一の引数HideBat.vbs "12 10 am"として提供されるようになります12 10 am。そのため、VBS スクリプトが配列内の 2 番目と 3 番目の引数を参照すると、それらは存在しないため、「サブスクリプトが範囲外です」というエラーが発生します。

次のようなことを試してください:

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

...コマンドの後と引数の間にスペースを挿入します。

関連情報