Sendet alle Syntaxfehler, die den Start eines Skripts verhindern, zur Standardfehlerausgabe (stderr), anstatt ein Dialogfenster anzuzeigen.
#ErrorStdOut Kodierung
#ErrorStdOut UTF-8
, dass Fehlermeldungen als UTF-8 kodiert werden, bevor sie zur Standardfehlerausgabe (stderr) gesendet werden. Das Programm, das die Ausgabe erfasst, muss UTF-8 unterstützen, und in einigen Fällen muss es erst konfiguriert werden, damit es diese überhaupt erfassen kann.Wenn diese Direktive im Skript nicht angegeben ist, wird jeder Syntaxfehler in einem Dialogfenster angezeigt.
[AHK_L 42+]: Fehler werden in stderr statt in stdout geschrieben. Die Windows-Eingabeaufforderung und umfangreiche Texteditoren können in der Regel beide Ausgabetypen anzeigen. Diese Änderung wurde erst mit [v1.1.19.01] dokumentiert.
Dies befähigt umfangreiche Texteditoren wie TextPad, SciTE, Crimson und EditPlus, zur fraglichen Zeile zu springen, sobald ein Syntaxfehler auftritt. Anstatt diese Direktive jedes Mal in ein Skript einzufügen, ist es üblicherweise besser, den Texteditor so einzustellen, dass er ein AutoHotkey-Skript mit der Befehlszeilenoption /ErrorStdOut startet (weiter unten finden Sie Anweisungen, wie Sie den Texteditor einstellen können).
Da AutoHotkey kein Konsolenprogramm ist, werden Fehler nicht direkt in der Windows-Eingabeaufforderung angezeigt. Dies kann umgangen werden, indem 1) [v1.1.33+] das Skript mit der Ahk2Exe-ConsoleApp-Direktive kompiliert wird, oder 2) die Ausgabe des Skripts über Piping oder Weiterleitung abgefangen wird. Zum Beispiel:
"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "Mein Skript.ahk" 2>&1 |more "C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "Mein Skript.ahk" 2>"Syntax-Fehler Log.txt"
Sie können die Ausgabe auch direkt via Piping in die Zwischenablage kopieren, indem Sie den systeminternen Clip-Befehl verwenden (für Windows XP und niedriger können Sie stattdessen cb.exe verwenden). Zum Beispiel:
"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "Mein Skript.ahk" 2>&1 |clip
Hinweis: 2>&1
bewirkt, dass stderr an stdout weitergeleitet wird, während 2>DateiName
stderr nur an eine Datei weiterleitet.
#ErrorStdOut kann wie alle anderen Direktiven nicht bedingt ausgeführt werden.
EditPlus:
C:\Program Files\AutoHotkey\AutoHotkey.exe
/ErrorStdOut "$(FilePath)"
$(FileDir)
TextPad:
C:\Windows\System32\cmd.exe
-- drücken Sie anschließend OK.cmd.exe
(oder der vollständige Pfad)/c ""C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "$File""
$FileDir
FileAppend (weil es auch Text zur stderr oder stdout senden kann)