#ErrorStdOut

Sendet alle Syntaxfehler, die den Start eines Skripts verhindern, zur Standardfehlerausgabe (stderr), anstatt ein Dialogfenster anzuzeigen.

#ErrorStdOut Codierung

Parameter

Codierung [v1.1.33+]
Eine Codierungszeichenkette, die angibt, wie die Ausgabe kodiert werden soll. #ErrorStdOut UTF-8 beispielsweise kodiert Fehlermeldungen als UTF-8, bevor sie zur 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. Lässt man diesen Parameter weg, wird standardmäßig CP0 verwendet.

Bemerkungen

[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] offiziell bekannt gemacht.

Mit dieser Direktive können umfangreiche Texteditoren wie TextPad, SciTE, Crimson und EditPlus bei Syntaxfehlern auf die betreffende Zeile springen. 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, 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 cb.zip (4 KB) herunterladen und dann das folgende Beispiel anwenden:

"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "Mein Skript.ahk" 2>&1 |cb.exe

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.

Anweisungen für bestimmte Texteditoren

EditPlus:

  1. Wählen Sie in der Menüleiste Tools > Configure User Tools aus.
  2. Drücken Sie die Schaltfläche: Add Tool > Program
  3. Menu Text: Beliebig
  4. Command: C:\Program Files\AutoHotkey\AutoHotkey.exe
  5. Argument: /ErrorStdOut "$(FilePath)"
  6. Initial directory: $(FileDir)
  7. Capture output: Yes

TextPad:

  1. Wählen Sie in der Menüleiste Configure > Preferences aus.
  2. Klappen Sie den Eintrag "Tools" auf.
  3. Drücken Sie die Schaltfläche "Add" und wählen Sie "Program" aus.
  4. Kopieren und fügen Sie folgendes ein (passen Sie gegebenenfalls den Pfad an): C:\Windows\System32\cmd.exe -- drücken Sie anschließend OK.
  5. Klicken Sie dreimal auf das neu hinzugefügte Element (cmd.exe) in der ListBox und benennen Sie es nach Belieben um (z. B. Skript starten).
  6. Drücken Sie "Apply".
  7. Wählen Sie das neue Element in der Baumstruktur links aus und tragen Sie folgende Informationen ein:
  8. Command (sollte bereits ausgefüllt sein): cmd.exe (oder der vollständige Pfad)
  9. Parameters (an eigenen Pfad anpassen, falls notwendig): /c ""C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "$File""
  10. Initial folder: $FileDir
  11. Setzen Sie folgende Häkchen: 1) Run minimized; 2) Capture output.
  12. Drücken Sie OK. Das neu hinzugefügte Element sollte nun im Menü "Tools" vorhanden sein.

FileAppend (weil es auch Text zur stderr oder stdout senden kann)

Beispiele

Sendet alle Syntaxfehler, die den Start des Skripts verhindern, zur stderr, anstatt ein Dialogfenster anzuzeigen.

#ErrorStdOut