スキップしてメイン コンテンツに移動

投稿

ラベル(引数)が付いた投稿を表示しています

VBSをタスクスケジューラーで起動したときのホームディレクトリ

やおらVBSでの引数処理を書いたのはほかでもない。 先に作成したソニー生命の巡回スクリプトをタスクスケジューラーに登録して実行したら、いまいちなのだ。 スクリプトを直接指示して実行しているのだが、その作業ディレクトリがエクスプローラーからダブルクリックで起動した時と違う。 上記の場合、スクリプトのあるフォルダにログファイルが出力されるのだが、タスクスケジューラーから起動すると、C:\Windows\System32 にログファイルが出力されてしまうのだ。 そこで、本来出力したい場所に出力できるよう、タスクスケジューラーで引数としてログファイルのパスを与える事にした。 これで上手くいった。

VBS で引数を受け取るサンプル

WScript.Arguments に引数要素が配列で格納されているので、これを取り出す。 =========================================== '############################# 'パラメータ=オーダーIDの取り出しとセット '############################# Dim oParam 'パラメータオブジェクト Dim strPrm0  'パラメータ要素格納 Set oParam = WScript.Arguments strPrm0 = oParam(0) Wscript.echo strPrm0 =========================================== これを引数あり、引数なしでそれぞれ実行してみる。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >cscript.exe test.vbs a a >cscript.exe test.vbs test.vbs(9, 1) Microsoft VBScript 実行時エラー: インデックスが有効範囲にありません。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ strPrm0 = oParam(0) の場所で怒られている。 引数なしで起動した場合には相応の対応をしたい。 そこで、上記を書き換える。 WScript.Arguments のCount ポロパティの値をチェックして動作を切り分ける方法。 =========================================== '############################# 'パラメータ=オーダーIDの取り出しとセット '############################# Dim oParam 'パラメータオブジェクト Dim strPrm0  'パラメータ要素格納 Set oParam = WScript.Arguments ...