人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

タスクスケジューラーで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で実行できるようにしたいのですが
どのようにすればいいでしょうか?

●質問者: takanii
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● hissssa
●100ポイント

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

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


takaniiさんのコメント
構文エラーですとなります

hissssaさんのコメント
失礼、VBSだと$が要りませんでした。

2 ● gong1971
●100ポイント

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

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

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


a-kuma3さんのコメント
しまった、被ってしまいました <tt>X-|</tt> しかも参考URL まで同じという……

gong1971さんのコメント
私が行ったテストでは、上記カレントディレクトリの設定で正常動作しました。 カレントディレクトリを指定しないと「C:\Windows\System32」がカレントディレクトリになるようですね。 また、スクリプト内で解決したい場合は、次のように記述すれば正常動作しました。 >> WSHShell.Run "b.vbs" ↓ WSHShell.Run Replace(WScript.ScriptFullName,WScript.ScriptName,"") & "b.vbs" <<

3 ● a-kuma3
●100ポイント

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)「開始」という名称からは連想しにくいが、このプログラムを起動する際のカレント・フォルダをフル・パスで入力する。

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

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ