FileAppend

Schreibt Text an das Ende einer Datei (und erstellt sie erst, falls notwendig).

FileAppend [, Text, Dateiname, Codierung]

Parameter

Text

Der Text, der an das Ende der Datei angefügt werden soll. Dieser Text kann Zeilenumbruchszeichen (`n) enthalten, um neue Zeilen beginnen zu können. Außerdem kann mithilfe eines Fortsetzungsbereichs eine lange Zeile in mehreren kurzen Zeilen aufgeteilt werden.

Wenn der Text-Parameter leer ist, wird Dateiname als leere Datei erstellt (wenn die Datei bereits existiert, wird nur ihr Änderungsdatum aktualisiert).

Enthält der Text-Parameter %ClipboardAll% oder eine Variable mit dem Wert von ClipboardAll, wird Dateiname ohne Vorbehalt mit dem kompletten Inhalt des Zwischenspeichers überschrieben (d. h. FileDelete ist nicht notwendig).

Dateiname

Der Name der Datei, die sich im A_WorkingDir-Verzeichnis befindet, solange kein absoluter Pfad angegeben ist.

End-of-Line-Übersetzung (EOL): Um die EOL-Konvertierung zu deaktivieren, setzt man vor dem Dateinamen ein Sternchen. Dieser Modus schreibt jedes Zeilenumbruchszeichen (`n) als einzelnes LF-Zeichen (LF), anstatt üblicherweise als CR+LF. Zum Beispiel: *C:\Meine Unix-Datei.txt.

Falls die Datei noch nicht offen ist (z. B. wegen einer Datei-lesenden Schleife), wird die EOL-Übersetzung automatisch deaktiviert, wenn der Text-Parameter CR-LF-Paare (`r`n) enthält. Das heißt, dass die oben genannte Sternchenoption automatisch in Kraft tritt. Ein Sternchen bei einem Text mit `r`n verbessert die Performance, weil das Programm nicht nach diesen Zeichen in Text suchen muss.

Standardausgabe (stdout): Ein Sternchen (*) im Parameter Dateiname bewirkt, dass der Text zur Standardausgabe (stdout) gesendet wird. Diese Art von Text kann auf eine Datei umgeleitet, an eine EXE-Datei weitergeleitet oder von originellen Texteditoren abgefangen werden. Zum Beispiel wäre die folgende Zeile als Eingabeaufforderung gültig:

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

Allerdings wird ein zur Standardausgabe gesendeter Text nicht in der Eingabeaufforderung angezeigt, von wo aus die Zeile gestartet wurde. Diese Problematik kann umgangen werden, indem man die Ausgabe des Skripts an einen anderen Befehl oder Programm weiterleitet. 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

[v1.1.20+]: Zwei Sternchen (**) in Dateiname bewirken, dass Text zum stderr-Stream gesendet wird.

Codierung

[AHK_L 42+]: Überschreibt die Standardcodierung von FileEncoding mit einer benutzerdefinierten Codierung.

ErrorLevel

[v1.1.04+] Dieser Befehl ist in der Lage, bei Misserfolg eine Ausnahme auszulösen. Weitere Informationen finden Sie unter Laufzeitfehler.

ErrorLevel wird bei Misserfolg auf 1 und bei Erfolg auf 0 gesetzt.

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

Bemerkungen

Um eine existierende Datei zu überschreiben, löscht man sie mit FileDelete, bevor man FileAppend verwendet.

Die Zieldatei wird nach Anfügen des Textes automatisch geschlossen (außer wenn FileAppend in seinem Einzelparameter-Modus innerhalb einer Datei-lesenden/-schreibenden Schleife ist).

[AHK_L 42+]: FileOpen() im Anfügemodus bietet mehr Kontrolle als FileAppend und lässt die Datei geöffnet, anstatt sie jedesmal neu zu öffnen und zu schließen. Sobald eine Datei im Anfügemodus geöffnet ist, kann die Zeichenkette mit File.Write(Zeichenkette) angefügt werden. File-Objekte unterstützen auch binäre Verarbeitung mit RawWrite/RawRead oder WriteNum/ReadNum, während FileAppend nur Text unterstützt.

Siehe auch

FileOpen/File-Objekt, FileRead, Datei-lesende Schleife, FileReadLine, IniWrite, FileDelete, OutputDebug, Fortsetzungsbereiche

Beispiel

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

; Das folgende Beispiel verwendet ein Fortsetzungsbereich, um ein Text besser lesbar und verwaltbar zu machen:
FileAppend,
(
Eine Textzeile.
Standardmäßig befindet sich das CR-Zeichen (Enter) zwischen der vorherigen und dieser Zeile.
    Diese Zeile wird mit einem Tabulator eingerückt; Standardmäßig wird dieser Tabulator auch in die Datei geschrieben.
Variablenverweise wie %Var% werden standardmäßig mit dem Variableninhalt ersetzt.
), C:\Meine Datei.txt

 

; Das folgende Beispiel zeigt, wie das FTP-Hochladen mithilfe des systeminternen FTP-Befehls
; automatisiert werden kann. Dieses Skript wurde auf Windows XP getestet.

FTPBefehlDatei = %A_ScriptDir%\FTPBefehle.txt
FTPLogDatei = %A_ScriptDir%\FTPLog.txt
FileDelete %FTPBefehlDatei%  ; Falls das vorherige Ausführen vorzeitig beendet wurde.

FileAppend,  ; Das Komma ist in diesem Fall erforderlich.
(
open host.domain.com
username
password
binary
cd htdocs
put %VarMitNamenDerZieldatei%
delete EineAndereDatei.htm
rename AlterDateiname.htm NeuerDateiname.htm
ls -l
quit
), %FTPBefehlDatei%

RunWait %comspec% /c ftp.exe -s:"%FTPBefehlDatei%" >"%FTPLogDatei%"
FileDelete %FTPBefehlDatei%  ; Löscht sie aus Sicherheitsgründen.
Run %FTPLogDatei%  ; Zeigt das Protokoll zum Untersuchen an.