FileAppend

テキストまたはバイナリデータをファイルの末尾に書き込みます(必要に応じて、最初にファイルを作成します)。

FileAppend Text , Filename, Options

パラメータ

Text

型:文字列またはオブジェクト

ファイルに追加するテキストまたは生のバイナリデータです。テキストには改行文字(`n)を含めることができる。また、1本の長い線を、継続部によっていくつかの短い線に分割することができます。

Bufferのようなオブジェクトを渡して、生のバイナリデータを付加することができる。ファイルを作成する場合、オプションで「UTF-8」または「UTF-16」を指定した場合のみ、BOM(Byte Order Mark)が書き込まれます。デフォルトのエンコーディングは無視され、Optionsに関係なく、オブジェクトが含むデータはそのまま書き込まれます。PtrプロパティとSizeプロパティを実装しているオブジェクトであれば、どのようなものでも使用可能です。

Filename

型:文字列

If omitted, the output file of the innermost enclosing file-reading loop will be used (if available). Otherwise, specify the name of the file to be appended, which is assumed to be in A_WorkingDir if an absolute path isn't specified. 保存先ディレクトリはすでに存在している必要があります。

標準出力(stdout):Filenameにアスタリスク(*)を指定すると、Textは標準出力(stdout)に送られます。このようなテキストは、ファイルにリダイレクトしたり、別のEXEにパイプしたり、おしゃれなテキストエディターでキャプチャしたりすることができます。例えば、以下のようにコマンドプロンプトで入力した場合は有効です:

"%ProgramFiles%\AutoHotkey\AutoHotkey.exe" "My Script.ahk" >"Error Log.txt"

ただし、stdoutに送られたテキストは、起動したコマンドプロンプトには表示されません。これは、1)Ahk2Exe ConsoleAppディレクティブでスクリプトをコンパイルする、または2)スクリプトの出力を他のコマンドやプログラムにパイプすることで回避することができます。事例:

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

Filenameにアスタリスク(**)を2つ指定すると、Textは標準エラーストリーム(stderr)に送信されます。

Options

型:文字列

以下の文字列のうち、0個以上。各オプションと次のオプションは、1つのスペースまたはタブで区切ってください。事例:"`n UTF-8"

エンコード:FileEncodingが受け付けるエンコーディング名(空文字列を除く)を指定すると、ファイルに UTF-8 または UTF-16 のバイト順マークがない場合に、そのエンコーディングを使用します。省略された場合、デフォルトはA_FileEncodingです(ただし、Textがオブジェクトの場合はバイトオーダーマークを書きません)。

RAW:RAW(大文字・小文字を区別しない)を指定すると、Textに含まれる正確なバイトを、変換せずにそのままファイルに書き込むことができます。このオプションは、以前に指定されたエンコーディングを上書きし、その逆もまた然りです。Textがオブジェクトでない場合、UTF-16文字列を使用するため、データサイズは常に2バイトの倍数となる。

`n(改行文字):キャリッジリターン(`r)がまだ存在しない場合、各ラインフィード(`n)の前に挿入されます。つまり、`nから`r`nに変換するのです。この翻訳は、通常、パフォーマンスに影響を与えません。このオプションを使用しない場合、Text内の行末は変更されません。

エラー処理

失敗したときはOSErrorをスローします。

A_LastErrorには、オペレーティングシステムのGetLastError()関数の結果が設定されます。

備考

既存のファイルを上書きする場合は、FileAppendを使用する前にFileDeleteでファイルを削除してください。

テキストが追加された後、ターゲットファイルは自動的に閉じられます(FileAppendがファイルの読み書きのループ内でシングルパラメータモードで使用されている場合を除く)。

アペンドモードのFileOpenは、FileAppendよりも制御性が高く、毎回ファイルを開いて閉じるのではなく、開いたままにしておくことができます。Once a file is opened in append mode, use FileObj.Write(Str) to append the string. ファイルオブジェクトは、RawWrite/RawReadまたはWriteNum/ReadNumによるバイナリI/Oもサポートしています。

FileEncodingFileOpen/FileオブジェクトFileReadファイル読み込みループIniWriteFileDeleteOutputDebug継続セクション

必要に応じてファイルを作成し、1行を追加します。

FileAppend "Another line.`n", "C:\My Documents\Test.txt"

読みやすさと保守性を高めるために、続きのセクションを使用します。

FileAppend "
(
A line of text.
デフォルトでは、前の行とこの行の間のハードキャリッジリターン(Enter)がファイルに書き込まれます。
	この行はタブでインデントされています。デフォルトでは、このタブもファイルに書き込まれます。
)", A_Desktop "\My File.txt"

オペレーティングシステム内蔵のFTPコマンドを使用して、FTPアップロードを自動化する方法について説明します。

FTPCommandFile := A_ScriptDir "\FTPCommands.txt"
FTPLogFile := A_ScriptDir "\FTPLog.txt"
try FileDelete FTPCommandFile  ; 前回実行したプログラムが途中で終了してしまった場合。

FileAppend
(
"open host.domain.com
username
password
binary
cd htdocs
put " VarContainingNameOfTargetFile "
delete SomeOtherFile.htm
rename OldFileName.htm NewFileName.htm
ls -l
quit"
), FTPCommandFile

RunWait Format('{1} /c ftp.exe -s:"{2}" >"{3}"', A_ComSpec, FTPCommandFile, FTPLogFile)
FileDelete FTPCommandFile  ; セキュリティ上、削除してください。
Run FTPLogFile  ; ログを表示させて確認します。