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を実行させたいのですが
うまく動作しません。どうすればいいでしょうか?
最後の
wsh.Run strFolderPath & "\hoge2\b.vbs"
を
wsh.Run "b.vbs"
にしてやればよいです。
検証してみましたが、私の環境では質問文のスクリプトで正常動作しました。
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件)