タイトル | : 練馬のスクリプトに関して |
Q&A | : 1045 |
投稿日 | : 2017/02/09(Thu) 16:44 |
投稿者 | : とりがら |
練馬をいつも便利に使わせていただいております。
練馬のスクリプトに関して質問ですが、スクリプトのコード内で 「登録してあるスクリプトファイルのパス」若しくは「練馬の実行ファイルのパス」又はそれに類するものを取得する方法があれば、お知恵をお貸しください。
[やりたいこと] 共用関数を外部ファイルに退避して、各スクリプトから呼び出して使用したい。 その際に、外部ファイルへの参照を相対パスで指定したい。
[コードのイメージ] Option Explicit ' 共用関数のロード Call Include("lib.vbs") ' 相対パスで指定
'リネーム処理 Function Proc(name) ' lib.vbsを用いたリネーム処理 End Function
' インクルード処理 Sub Include(strFilePath) Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") Dim wshell : Set wshell = CreateObject("WScript.Shell") strFilePath = fso.BuildPath(wshell.CurrentDirectory, strFilePath) ' "wshell.CurrentDirectory"が練馬の起動方法により不定 Dim file : Set file = fso.OpenTextFile(strFilePath, 1) ExecuteGlobal file.ReadAll() file.Close Set fso = Nothing Set file = Nothing End Sub
[問題点] スクリプトの現在のディレクトリが必ずしもスクリプトの実行フォルダと同じであるとは限らないため、 CreateObject("WScript.Shell").CurrentDirectoryから、パスを取得しようとすると練馬の起動方法により変化してしまう。 CreateObject("Scripting.FileSystemObject").GetFolder(".") も同様。 WScript.ScriptFullNameは、"WScript"が宣言されていないと怒られる。
[環境] win10 練馬ver.5.0β
|