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

VBSの質問です
hoge1
|-a.vbs
|-hoge2
|-b.vbs
という構造があります。

a.vbs
-------------------------
dim wsh
set wsh = CreateObject( "WScript.Shell" )
Dim objFileSystemObject
Set objFileSystemObject = WScript.CreateObject("Scripting.FileSystemObject")
Dim strFolderPath
strFolderPath = objFileSystemObject.GetFolder(".").Path
wsh.CurrentDirectory = strFolderPath & "\hoge2"
wsh.Run strFolderPath & "\hoge2\b.vbs"
----------------------

a.vbsを実行してhoge2フォルダの中でb.vbsを実行させたいのですが
うまく動作しません。どうすればいいでしょうか?


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

▽最新の回答へ

1 ● きゃづみぃ
●150ポイント ベストアンサー

最後の
wsh.Run strFolderPath & "\hoge2\b.vbs"

wsh.Run "b.vbs"

にしてやればよいです。


2 ● gong1971
●150ポイント

検証してみましたが、私の環境では質問文のスクリプトで正常動作しました。

hoge2のフォルダ名ですが、実際のフォルダ名とスクリプト内のフォルダ名で
半角全角などを含めて違いはありませんか?

また、問題を見つける際に、msgboxを使われると原因が分かるかもしれません。
例えば、

msgbox strFolderPath & "\hoge2\b.vbs"
wsh.Run strFolderPath & "\hoge2\b.vbs"

上記のようにRunの前にmsgboxで実行するコマンドを表示させる事で、
実際にどのようにコマンドが実行されるのか確認する事ができます。
上記msgboxを入れて実行した際、表示されるパスにおかしなところはありませんか?

また、カレントディレクトリを移動しているのに、b.vbsをフルパスで
指定しているのが少し気になりました。(間違ってはいませんが二度手間になっているので)

Dim strFolderPath
strFolderPath = objFileSystemObject.GetFolder(".").Path
wsh.CurrentDirectory = strFolderPath & "\hoge2"
wsh.Run "b.vbs"

もしくは、

Dim strFolderPath
strFolderPath = objFileSystemObject.GetFolder(".").Path
wsh.Run strFolderPath & "\hoge2\b.vbs"

のどちらかで良いかと思います。

関連質問

●質問をもっと探す●



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