web-dev-qa-db-ja.com

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

「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つの引数を渡す方法を教えてください。

3
Black Block

引数間のスペースを考慮するのを忘れました。したがって、正当なファイルではない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

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

1