タスクスケジューラーでvbsがうまく動かない

デスクトップにa.vbs b.vbsがあります
a.vbsをデスクトップからダブルクリックで起動させるとb.vbsが実行できるのですが

a.vbs
***************
dim wsh
Dim objFileSystemObject
Dim strFolderPath
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "b.vbs"
***************

タスクマネージャにa.vbsを登録して実行すると
エラーが出てb.vbsを実行できません
a.vbsの中のb.vbsの前に絶対パスを入れれば動くのですが
a.vbsはいろいろな環境で使うので同じフォルダを相対パスで設定しb.vbsで実行できるようにしたいのですが
どのようにすればいいでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/11/26 14:55:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:hissssa No.1

回答回数428ベストアンサー獲得回数129

ポイント100pt

プログラム中で、a.vbsの絶対パス名を取得してから加工し、b.vbsの絶対パス名を生成するように実装すればOKです。
スクリプト自身の絶対パスは、WScript.ScriptFullNameから取得可能です。例として以下のようなコードを書けば、b.vbsの絶対パスが得られます。

Dim script
script = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\")) & "b.vbs"

id:takanii

構文エラーですとなります

2013/11/19 15:32:04
id:hissssa

失礼、VBSだと$が要りませんでした。

2013/11/19 15:53:05
id:gong1971 No.2

回答回数451ベストアンサー獲得回数70

ポイント100pt

タスクスケジューラでタスクを作成する際、カレントディレクトリにデスクトップのパスを指定してはいかがでしょうか?

下記ページの「カレント・フォルダ」の箇所です。
http://www.atmarkit.co.jp/ait/articles/1305/31/news049.html

次は、実行するプログラムのありかとコマンドライン・パラメータ、実行時のカレント・フォルダを指定する。

id:a-kuma3

しまった、被ってしまいました X-|
しかも参考URL まで同じという……

2013/11/19 15:39:06
id:gong1971

私が行ったテストでは、上記カレントディレクトリの設定で正常動作しました。
カレントディレクトリを指定しないと「C:\Windows\System32」がカレントディレクトリになるようですね。

また、スクリプト内で解決したい場合は、次のように記述すれば正常動作しました。

WSHShell.Run "b.vbs"

WSHShell.Run Replace(WScript.ScriptFullName,WScript.ScriptName,"") & "b.vbs"

2013/11/19 15:46:54
id:a-kuma3 No.3

回答回数4972ベストアンサー獲得回数2154

ポイント100pt

a.vbs を登録したタスクのプロパティで「操作」タブの「プログラムの開始」に「開始(オプション)」という項目があります。
そこに a.vbs を置いてあるフォルダの絶対パスを記述すると、b.vbs を見つけられると思います。

http://www.atmarkit.co.jp/ait/articles/1305/31/news049.html#wi-scr07.gif

http://image.itmedia.co.jp/ait/articles/1305/31/wi-scr07.gif
(3)「開始」という名称からは連想しにくいが、このプログラムを起動する際のカレント・フォルダをフル・パスで入力する。

※画像は、ウィザードでのダイアログです
 ページの最後の方にプロパティ変更のダイアログの絵があります(操作タブが選択されていませんが)。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません