FileAppend

텍스트를 파일 끝에 씁니다 (필요하면 먼저 파일을 생성합니다).

FileAppend , Text, Filename, Encoding

매개변수

Text

파일에 추가할 텍스트. 이 텍스트는 라인피드 문자 (`n)를 포함해 새줄을 시작할 수도 있습니다. 게다가, 기다란 한줄은 계속 섹션을 이용하여 더 짧은 여러 줄로 분리할 수 있습니다.

Text가 비어 있으면, Filename이 임시 파일로 생성됩니다 (그러나 그 파일이 이미 존재하면, 그의 수정 시간이 갱신됩니다).

Text%ClipboardAll%이거나 이전에 ClipboardAll의 값이 할당된 변수라면, Filename은 무조건 그 클립보드의 전체 내용으로 덮어쓰기 됩니다 (즉, FileDelete가 필요하지 않습니다).

Filename

추가될 파일의 이름. 절대 경로가 지정되어 있지 않으면 %A_WorkingDir%에 있다고 간주됩니다. 목표 디렉토리는 이미 존재해야 합니다.

End of line (EOL) translation: To disable EOL translation, prepend an asterisk to the filename. 이렇게 하면 각 라인피드 문자 (`n)가 윈도우즈의 표준 CR+LF 대신에 한개짜리 라인피드 (LF)가 씌여집니다. 예를 들어: *C:\My Unix File.txt.

If the file is not already open (due to being inside a file-reading loop), EOL translation is automatically disabled if Text contains any carriage return and linefeed pairs (`r`n). 다른 말로, 앞 문단에서 기술한 별표 옵션이 자동으로 효력을 발휘합니다. 그렇지만 Text에 `r`n가 들어 있을 때 별표를 지정하면 수행성능이 향상됩니다. 왜냐하면 프로그램이 Text를 스캔해 `r`n을 찾을 필요가 없기 때문입니다.

표준 출력 (stdout): 별표 (*)를 Filename에 지정하면 Text는 표준 출력 (stdout)으로 전송됩니다. 그런 텍스트는 파일에 방향전환할 수 있고, 또다른 EXE로 파이프 처리해 보낼 수 있으며, 또는 환상적인 편집기로 나포할 수 있습니다. 예를 들어, 다음은 명령어 프롬프트에서 타자하면 유효합니다:

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

그렇지만, 표준출력으로 전송된 텍스트는 처음 기동된 프롬프트에 나타나지 않습니다. This can be worked around by 1) [v1.1.33+] compiling the script with the Ahk2Exe ConsoleApp directive, or 2) piping a script's output to another command or program. 예를 들어:

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

[v1.1.20+]: 별표 두 개 (**)를 Filename에 지정하면 Text가 표준에러(stderr) 스트림으로 전송됩니다.

Encoding

[AHK_L 42+]: FileEncoding으로 설정된 기본 인코딩을 오버라이드 합니다. Encoding은 같은 형식을 따릅니다.

에러 처리

[v1.1.04+]: 이 명령어는 실패하면 예외를 던질 수 있습니다. 더 자세한 정보는 실행시간 에러를 참조하십시오.

ErrorLevel은 문제가 있으면 1, 그렇지 않으면 0이 설정됩니다.

A_LastError는 운영 체제의 GetLastError() 함수의 결과가 설정됩니다.

논평

기존의 파일을 덮어쓰려면, FileAppend를 사용하기 전에 FileDelete로 지우십시오.

목표 파일은 텍스트가 추가된 후 자동으로 닫힙니다 (단, FileAppend가 파일-읽기/쓰기 회돌이 안에서 단일-매개변수 모드를 사용할 때는 예외입니다).

[AHK_L 42+]: FileOpen()을 추가 모드로 사용하는 것이 FileAppend보다 더 섬세하게 제어할 수 있고 계속 파일을 열어 둘 수도 있습니다. 매번 파일을 열고 닫을 필요가 없습니다. 일단 파일이 추가 모드로 열리면 file.Write(string)를 사용해 추가하면 됩니다. 파일 객체는 RawWrite/RawRead 또는 WriteNum/ReadNum를 통하여 이진 I/O도 지원합니다. 반면에 FileAppend는 오직 텍스트만 지원합니다.

FileOpen()/File Object, FileRead, 파일-읽기 회돌이, FileReadLine, IniWrite, FileDelete, OutputDebug, 계속 섹션

예제

Creates a file, if necessary, and appends a line.

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

계속 섹션을 사용해 가독성과 유지관리성을 향상시킵니다.

FileAppend,
(
한 줄의 텍스트.
기본으로, 이전 줄과 이 줄 사이의 하드 캐리지 리턴은 (Enter) 파일에 쓰여집니다.
    이 줄은 탭 하나로 들여쓰기 됩니다; 기본으로, 탭도 파일에 씌여집니다.
%Var%와 같은 변수 참조는 기본으로 확장됩니다.
), C:\My File.txt

운영 체제의 내장 FTP 명령어를 사용하여 FTP 업로드를 자동화 하는 법을 보여줍니다. 이 스크립트는 Windows XP에서 검증되었습니다.

FTPCommandFile := A_ScriptDir "\FTPCommands.txt"
FTPLogFile := A_ScriptDir "\FTPLog.txt"
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 %ComSpec% /c ftp.exe -s:"%FTPCommandFile%" >"%FTPLogFile%"
FileDelete %FTPCommandFile%  ; 보안상의 이유로 삭제합니다.
Run %FTPLogFile%  ; 검토를 위해 로그 기록을 보여줍니다.