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 Text leer ist, wird Dateiname als leere Datei erstellt (wenn die Datei bereits existiert, wird nur ihr Änderungsdatum aktualisiert).

Ist Text die Variablenreferenz %ClipboardAll% oder eine Variable, die zuvor den Wert von ClipboardAll zugewiesen bekommen hat, wird Dateiname ohne Vorbehalt mit dem kompletten Inhalt des Zwischenspeichers überschrieben (d. h. FileDelete ist nicht notwendig).

Dateiname

Der Name der Datei, die erweitert werden soll. Wenn kein absoluter Pfad angegeben ist, wird die Datei im A_WorkingDir-Verzeichnis vermutet. Das Zielverzeichnis muss bereits vorhanden sein.

End-of-Line-Übersetzung (EOL): Um die EOL-Konvertierung zu deaktivieren, setzen Sie ein Sternchen vor dem Dateinamen. Dieser Modus schreibt jedes Zeilenumbruchszeichen (`n) als einzelnes LF-Zeichen (LF) statt wie üblich 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 Leistung, 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. Um das zu umgehen, leiten Sie die Ausgabe des Skripts via Piping an einen anderen Befehl oder an ein anderes Programm weiter. 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.

Fehlerbehandlung

[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öschen Sie sie mit FileDelete, bevor Sie FileAppend verwenden.

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 jedes Mal 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

Beispiele

#1

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

#2: Das folgende Beispiel verwendet einen Fortsetzungsbereich, um die Übersichtlichkeit und Wartbarkeit des Skripts zu erhöhen:

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.
Variablenreferenzen wie %Var% werden standardmäßig mit dem Inhalt der Variable ersetzt.
), C:\Meine Datei.txt

#3: Das folgende Beispiel zeigt, wie das FTP-Hochladen mithilfe des systeminternen FTP-Befehls automatisiert werden kann. Dieses Skript wurde in 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.