FileAppend

Schreibt Text oder Binärdaten an das Ende einer Datei (und erstellt sie vorher, wenn nötig).

FileAppend Text , DateiName, Optionen

Parameter

Text

Typ: Zeichenkette oder Objekt

Wenn leer oder weggelassen, wird DateiName als leere Datei erstellt (wenn die Datei bereits existiert, wird nur ihr Änderungsdatum aktualisiert). Andernfalls geben Sie den Text oder rohe Binärdaten an, der/die an das Ende der Datei angefügt werden soll(en). Der Text kann LF-Zeichen (`n) enthalten, um neue Zeilen zu beginnen. Außerdem kann via Fortsetzungsbereich eine lange Zeile in mehrere kurze Zeilen aufgeteilt werden.

Es kann ein Buffer-ähnliches Objekt übergeben werden, um rohe Binärdaten anzufügen. Beim Erstellen einer Datei wird nur eine Byte-Order-Markierung (BOM) geschrieben, wenn "UTF-8" oder "UTF-16" in Optionen angegeben wurde. Die Standardkodierung wird ignoriert, und die im Objekt enthaltenen Daten werden unverändert geschrieben, unabhängig von Optionen. Es kann ein beliebiges Objekt mit einer Ptr- und Size-Eigenschaft verwendet werden.

DateiName

Typ: Zeichenkette

Wenn weggelassen, wird die Ausgabedatei der innersten umschlossenen dateilesenden Schleife verwendet (falls vorhanden). Andernfalls geben Sie den Namen der Datei an, an die der Text oder die rohen Binärdaten angefügt werden soll(en). Wenn kein absoluter Pfad angegeben ist, wird die Datei im A_WorkingDir-Verzeichnis vermutet. Das Zielverzeichnis muss bereits existieren.

Standardausgabe (stdout): Geben Sie ein Sternchen (*) für DateiName an, um Text zur Standardausgabe (stdout) zu senden. Diese Art von Text kann auf eine Datei umgeleitet, an eine EXE-Datei weitergeleitet oder von umfangreichen Texteditoren abgefangen werden. Zum Beispiel könnte man folgendes in der Eingabeaufforderung schreiben:

"%ProgramFiles%\AutoHotkey\AutoHotkey.exe" "Mein Skript.ahk" >"Fehlerprotokoll.txt"

Allerdings wird ein zur Standardausgabe gesendeter Text nicht in der Eingabeaufforderung angezeigt, von der aus die Zeile gestartet wurde. Dies kann umgangen werden, indem 1) das Skript mit der Ahk2Exe-ConsoleApp-Direktive kompiliert wird, oder 2) die Ausgabe des Skripts via Piping an einen anderen Befehl oder an ein anderes Programm weitergeleitet wird. Zum Beispiel:

"%ProgramFiles%\AutoHotkey\AutoHotkey.exe" "Mein Skript.ahk" |more
For /F "tokens=*" %L in ('""%ProgramFiles%\AutoHotkey\AutoHotkey.exe" "Mein Skript.ahk""') do @Echo %L

Geben Sie zwei Sternchen (**) für DateiName an, um Text zur Standardfehlerausgabe (stderr) zu senden.

Optionen

Typ: Zeichenkette

Beliebig viele der folgenden Zeichenketten. Trennen Sie alle Optionen jeweils durch ein Leer- oder Tabulatorzeichen. Zum Beispiel: "`n UTF-8"

Kodierung: Geben Sie einen beliebigen Kodierungsnamen an, der von FileEncoding unterstützt wird (mit Ausnahme der leeren Zeichenkette), um diese Kodierung zu verwenden, wenn die Datei keine UTF-8- oder UTF-16-Byte-Order-Markierung hat. Wenn weggelassen, wird standardmäßig A_FileEncoding verwendet (es sei denn, Text ist ein Objekt, dann wird keine Byte-Order-Markierung geschrieben).

RAW: Geben Sie das Wort RAW an (nicht Groß-/Kleinschreibung-sensitiv), um Text unverändert und ohne Umwandlung in die Datei zu schreiben. Diese Option überschreibt jede vorher festgelegte Kodierung und umgekehrt. Wenn Text kein Objekt ist, ist die Datengröße immer ein Vielfaches von 2 Bytes, da UTF-16-Zeichenketten verwendet werden.

`n (ein LF-Zeichen): Fügt vor jedem LF-Zeichen (`n) ein CR-Zeichen (`r) ein, falls noch nicht vorhanden. Mit anderen Worten wird `n in `r`n übersetzt. Diese Übersetzung hat typischerweise keinen Einfluss auf die Performanz. Wenn diese Option nicht verwendet wird, bleiben Zeilenenden in Text unverändert.

Fehlerbehandlung

Bei Misserfolg wird ein OSError ausgelöst.

A_LastError wird auf das Ergebnis der Systemfunktion GetLastError() gesetzt.

Bemerkungen

Um eine existierende Datei zu überschreiben, löschen Sie diese mit FileDelete, bevor Sie FileAppend verwenden.

Die Zieldatei wird automatisch geschlossen, nachdem der Text angefügt wurde (außer wenn FileAppend im Einzelparameter-Modus innerhalb einer dateilesenden/-schreibenden Schleife verwendet wird).

FileOpen im Anfügemodus bietet mehr Kontrolle als FileAppend und lässt die Datei geöffnet, anstatt sie jedes Mal neu zu öffnen und zu schließen. Sobald eine Datei im Anfügemodus geöffnet ist, kann mit File.Write(Zeichenkette) die Zeichenkette angefügt werden. File-Objekte unterstützen auch binäre Ein-/Ausgabe via RawWrite/RawRead oder WriteNum/ReadNum.

FileEncoding, FileOpen/File-Objekt, FileRead, dateilesende Schleife, IniWrite, FileDelete, OutputDebug, Fortsetzungsbereiche

Beispiele

Erstellt eine Datei, falls erforderlich, und fügt eine Zeile an.

FileAppend "Eine weitere Zeile.`n", "C:\Meine Dokumente\Test.txt"

Verwenden Sie einen Fortsetzungsbereich, um die Übersichtlichkeit und Wartbarkeit des Skripts zu verbessern.

FileAppend "
(
Eine Textzeile.
Standardmäßig wird der Zeilenumbruch (Enter) zwischen der vorherigen und dieser Zeile in die Datei geschrieben.
	Diese Zeile ist mit einem Tabulatorzeichen eingerückt; standardmäßig wird es auch in die Datei geschrieben.
)", A_Desktop "\Meine Datei.txt"

Zeigt, wie das FTP-Hochladen mit dem systeminternen FTP-Befehl automatisiert werden kann.

FTPBefehlDatei := A_ScriptDir "\FTPBefehle.txt"
FTPLogDatei := A_ScriptDir "\FTPLog.txt"
try FileDelete FTPBefehlDatei  ; Im Falle einer vorzeitig terminierten Ausführung.

FileAppend
(
"open host.domain.com
username
password
binary
cd htdocs
put " VarMitZieldateiname "
delete EineAndereDatei.htm
rename AlteDateiName.htm NeueDateiName.htm
ls -l
quit"
), FTPBefehlDatei

RunWait Format('{1} /c ftp.exe -s:"{2}" >"{3}"', A_ComSpec, FTPBefehlDatei, FTPLogDatei)
FileDelete FTPBefehlDatei  ; Aus Sicherheitsgründen löschen.
Run FTPLogDatei  ; Protokoll zur Überprüfung anzeigen.