WSH(VBS)をexeファイルにした際に実行ファイルが保存してある場所を取得することは可能??


テキストファイルでVBSを開発し、ダブルクリックするだけで実行することはできました。
ただし、フルパスを入力しているので、開発環境以外で使用できない可能性があるということが弱点です。
currentdirectryでカレントディレクトリを取得できることはわかりましたが、VBSにコーディングしてexeファイルを作成後、実行するとカレントディレクトリが一時フォルダ(C:\Windows\Temp)を持ってきてしまいます。
開発環境であっても他の環境であってもこの取得してくるフォルダ名が同じです。
どうにかしてこのフォルダ名を一時フォルダではなくファイルを実行したフォルダにできないのでしょうか?
いくら調べてもわからなかったので教えて下さい。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2015/01/08 09:04:51

ベストアンサー

id:y3kz No.1

回答回数31ベストアンサー獲得回数9

「MakeExe」の「readme.txt」に作者さんの注意書きがありますよー

 なおスクリプト中で実行ファイルのパスを知りたい時は、
『WScript.ScriptFullName』ではなく、添付ファイルに含まれてい
るModulePath.vbsおよびModulePath.jsにある『ModulePath()』関数
を利用してください。

元のvbsをTEMPフォルダに展開するときに
.exeがあるフォルダのパスを書いたファイルを
作っておいてくれてるみたいです。
「ModulePath()」は、そのファイルから
フォルダのパスを読み取る関数ですね。

質問者さんのVBSに「ModulePath.vbs」にある
「ModulePath()」のブロックをコピペして、
CurrentDirectory の代わりに使えばいいです。

id:keijun5145

ありがとうございます。
早速やってみます。m(__)m

2015/01/08 09:04:26
  • id:degucho
    exeファイルを作成ってなんでしょうか?
    CurrentDirectoryはWScript.Shellのやつかな。
    下記はどうでしょうか
    http://jehupc.exblog.jp/14169137/
  • id:keijun5145
    exeファイルを作成→MakeExe(http://www.vector.co.jp/soft/winnt/prog/se389017.html)を使って.vbsから.exeに変換します。
    CurrentDirectryはWScript.Shellです。
    同様のことはVBSにテキストで利用した場合はできたのですが、exeファイルを作成した場合にはtempフォルダを取得してしまいうまくいきませんでした。

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

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

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

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