#Include / #IncludeAgain

指定したスクリプトファイルの内容をその位置に組み込む

#Include FileName
#IncludeAgain FileName 

Parameters

引数名説明
FileName 組みこむファイル名。
相対パスで記述した場合、基準ディレクトリ(スクリプト開始時はカレントディレクトリ)から検索される。
変数・環境変数の参照は使えないが、%A_ScriptDir%、%A_AppData%、%A_AppDataCommon%だけは例外的に使用できる。
引用符で囲んだり、特定文字をエスケープしたりする必要は無い。

ファイル名の前に半角スペースで区切って「*i」と書くと、ファイルが存在しなくてもエラーにせずそのまま実行するようになる。

ファイル名の代わりにディレクトリパスを記述すると、#IncludeやFileInstallで使用される基準ディレクトリを変更できる。
ディレクトリパスには変数・環境変数の参照は使えないが、%A_ScriptDir%だけは例外的に使用できる。
この方法で基準ディレクトリを変更しても、スクリプト実行時の%A_WorkingDir%の内容には影響は無い。

Remarks

#Include / #IncludeAgainは、スクリプトが実行される前の解析の段階で実行される。
スクリプトが実行されるときには、あたかも#Includeが書かれたところに指定されたスクリプトファイルの内容が書かれているかのようになる。

#Includeは、すでに一度組み込まれたスクリプトは組み込まれない。
#IncludeAgainでは、すでに組み込まれたことがあるかにかかわらず、指定したスクリプトが組み込まれる。

関数ライブラリ機能を利用すれば、#Includeを記述せずに、別のファイルに記述された関数を呼び出せる。

ListLinesなどで表示される行番号は、組み込みを行う前のものが表示される。

Example(s)

a=aaaa
#Include %A_ScriptDir%  ;ここから下の#IncludeやFileInstallの基準パスを変更


#Include test.ahk

MsgBox,in main script

a=bbb
#Include test.ahk

MsgBox,in main script2

#IncludeAgain test.ahk
Loop,3
{
	a=%A_Index%
	#IncludeAgain test.ahk
}

;test.ahk
MsgBox,%a%