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を実行させたいのですが
うまく動作しません。どうすればいいでしょうか?

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

ベストアンサー

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント150pt

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

wsh.Run "b.vbs"

にしてやればよいです。

その他の回答1件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198ここでベストアンサー

ポイント150pt

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

wsh.Run "b.vbs"

にしてやればよいです。

id:gong1971 No.2

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

ポイント150pt

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

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"

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

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

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

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

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

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