把任何阻止脚本运行的语法错误发送到标准错误(stderr), 而不是显示一个对话框.
#ErrorStdOut Encoding
编码字符串指定如何对输出进行编码. 例如, #ErrorStdOut UTF-8
将错误信息编码为 UTF-8 然后再发送到 stderr. 无论捕获输出的程序是什么, 都必须支持 UTF-8, 并且在某些情况下可能需要配置为期望 UTF-8. 如果省略, 它默认为 CP0
.
注意: 这个参数不是一个表达式, 但可以用引号括起来(可以是 '单引号' 或 "双引号").
错误被写入 stderr, 而不是 stdout. 命令行和高级编辑器往往会同时显示这些信息.
这个指令可以让诸如 TextPad, SciTE, Crimson 和 EditPlus 这些高级编辑器在语法错误发生时跳到有问题的行. 由于必须将 #ErrorStdOut 指令添加到脚本中, 所以通常最好设置编辑器使用命令行开关 /ErrorStdOut 来启动任何 AutoHotkey 脚本(详情请参阅下面的设置说明).
因为 AutoHotkey 不是控制台程序, 所以错误将不会直接出现在命令行中. 这可以通过以下方法解决 1) 使用 Ahk2Exe ConsoleApp 指令编译脚本, 或 2) 通过管道或重定向捕获脚本的输出. 例如:
"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "My Script.ahk" 2>&1 |more "C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "My Script.ahk" 2>"Syntax-Error Log.txt"
您还可以通过下载 cb.zip(4 KB) 然后按照以下示例, 将输出直接通过管道传输到剪贴板:
"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "My Script.ahk" 2>&1 |cb.exe
注意: 2>&1
将 stderr 重定向到 stdout, 而 2>Filename
只将 stderr 重定向到一个文件.
和其他指令一样, #ErrorStdOut 不能有条件地执行.
EditPlus:
TextPad:
C:\Windows\System32\cmd.exe
-- 然后点击 OK.FileAppend(因为它也可以发送文本到 stderr 或 stdout)