「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
...コマンドの後と引数の間にスペースを挿入します。