AutoIT用户宏发出当前脚本名称

时间:2016-09-13 22:08:55

标签: macros autoit defined

在我的#include文件中,我想输出包含行号和脚本名称的调试消息,但是当@ScriptLineNumber宏发出它所在的#include文件的行号时,无法发出当前文件的文件名。我想在调试消息中定义类似@ThisScriptName的用户宏,如下所示:

_DebugOut(“+++:”& @ThisScriptName&“:”& @ScriptLineNumber&“:some text”)

输出看起来像这样:

+++:SampleIncludedFile.au3:127:some text

1 个答案:

答案 0 :(得分:0)

无法执行此操作,以便使用任何可用的宏提供包含的文件名。

最简单的替代方法是使用在每个包含文件顶部覆盖的变量。

ExampleScript.au3:

#include "ExampleInclude.au3"

Global $ThisScriptName = "ExampleScript"

ConsoleWrite("Hello From: " & $ThisScriptName & @LF)

ExampleInclude.au3:

; #include <...>

Global $ThisScriptName = "ExampleInclude"

ConsoleWrite("Hello From: " & $ThisScriptName & @LF)

使用这种方法,重要的是在包含的其他文件后定义变量。

其他替代方案可能是使用预处理器,要么自己编写一个,要么使用其他人已经编写过的其中一个。这可以简单到只是用文件的字符串版本替换@ThisScriptName的每一个出现。