</head> <body> <h1>#ErrorStdOut</h1> <p>把任何阻止脚本运行的语法错误发送到标准错误(stderr), 而不是显示一个对话框.</p> <pre class="Syntax"><span class="func">#ErrorStdOut</span> <span class="optional">Encoding</span></pre> <h2 id="Parameters">参数</h2> <dl> <dt>Encoding</dt> <dd> <p>类型: <a href="../Concepts.htm#strings">字符串</a></p> <p>如果省略, 它默认为 CP0(系统默认的 ANSI 代码页). 否则, 请指定<a href="FileEncoding.htm">编码字符串</a>指示如何对输出进行编码. 例如, <code>#ErrorStdOut UTF-8</code> 将错误信息编码为 UTF-8 然后再发送到 stderr. 无论捕获输出的程序是什么, 都必须支持 UTF-8, 并且在某些情况下可能需要配置为期望 UTF-8.</p> <p class="note"><strong>注意:</strong> 这个参数不是一个表达式, 但可以用引号括起来(可以是 '单引号' 或 "双引号").</p> </dd> </dl> <h2 id="Remarks">备注</h2> <p>如果脚本中没有指定该指令, 则会在对话框中显示语法错误.</p> <p>错误被写入 stderr, 而不是 stdout. 命令行和高级编辑器往往会同时显示这些信息.</p> <p>这个指令可以让诸如 TextPad, SciTE, Crimson 和 EditPlus 这些高级编辑器在语法错误发生时跳到有问题的行. 由于必须将 #ErrorStdOut 指令添加到脚本中, 所以通常最好设置编辑器使用<a href="../Scripts.htm#cmd">命令行开关</a> <strong>/ErrorStdOut</strong> 来启动任何 AutoHotkey 脚本(详情请参阅下面的设置说明).</p> <p>因为 AutoHotkey 不是控制台程序, 所以错误将不会直接出现在命令行中. 这可以通过以下方法解决 1) 使用 <a href="../misc/Ahk2ExeDirectives.htm#ConsoleApp">Ahk2Exe ConsoleApp 指令</a>编译脚本, 或 2) 通过管道或重定向捕获脚本的输出. 例如:</p> <pre class="no-highlight">"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "My Script.ahk" <strong>2&gt;&amp;1 |more</strong> "C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "My Script.ahk" <strong>2&gt;"Syntax-Error Log.txt"</strong></pre> <p>你还可以使用操作系统内置的 clip 命令将输出直接管道传输到剪贴板. 例如:</p> <pre class="no-highlight">"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "My Script.ahk" <strong>2&gt;&amp;1 |clip</strong></pre> <p class="note"><strong>注意:</strong> <code>2&gt;&amp;1</code> 将 stderr 重定向到 stdout, 而 <code>2&gt;<i>Filename</i></code> 只将 stderr 重定向到一个文件.</p> <p>和其他指令一样, #ErrorStdOut 不能有条件地执行.</p> <h2 id="Instructions_for_specific_editors">特定编辑器的设置说明</h2> <p><strong>EditPlus:</strong></p> <ol> <li>在菜单栏选择 Tools(工具) > Configure User Tools(配置用户工具).</li> <li>点击按钮: Add Tool(添加) &gt; Program(应用程序)</li> <li>Menu Text(菜单文本): 你自己填写</li> <li>Command(命令): C:\Program Files\AutoHotkey\AutoHotkey.exe</li> <li>Argument(参数): /ErrorStdOut "$(FilePath)"</li> <li>Initial directory(初始目录): $(FileDir)</li> <li>Capture output(捕获输出): Yes</li> </ol> <p><strong>TextPad:</strong></p> <ol> <li>在菜单栏选择 Configure &gt; Preferences.</li> <li>展开 Tools(工具) 菜单.</li> <li>点击 Add 按钮然后选择 "Program".</li> <li>复制并粘贴(调整为您的 cmd.exe 路径): <code>C:\Windows\System32\cmd.exe</code> -- 然后点击 OK.</li> <li>三击列表框中新添加的项(cmd.exe) 并将其重命名为您选择的自定义名称(如 Launch Script).</li> <li>点击 Apply. </li> <li>从左侧树列表中选择新增的项, 然后填写下列信息:</li> <li>Command(应该已经填好): cmd.exe(或者是它的完整路径)</li> <li>Parameters(调整为您的 AutoHotkey.exe 路径): /c ""C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "$File""</li> <li>Initial folder: $FileDir</li> <li>选择下列框: 1) Run minimized; 2) Capture output.</li> <li>点击 OK. 新添加的项就应该已经出现在 Tools 菜单中了.</li> </ol> <h2 id="Related">相关</h2> <p><a href="FileAppend.htm">FileAppend</a>(因为它也可以发送文本到 stderr 或 stdout)</p> <h2 id="Examples">示例</h2> <div class="ex" id="ExBasic"> <p><a class="ex_number" href="#ExBasic"></a> 发送任何阻止脚本启动的语法错误到 stderr, 而不是显示一个对话框.</p> <pre>#ErrorStdOut</pre> </div> </body> </html>