「ClockTalk.bat」という3つの引数を持つバッチファイルがあります。
nircmd.exe speak text "Attention it's now %1 %2, %3 Hours remain to the end of the day" -3
「HideBat.vbs」というvbscriptを使用して、DOS画面を非表示にしてバッチファイルを実行します。
'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つの引数を渡す方法を教えてください。
引数間のスペースを考慮するのを忘れました。したがって、正当なファイルではない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
...コマンドの後および引数の間にスペースを挿入します。