FileAppend
텍스트를 파일 끝에 씁니다 (필요하면 먼저 파일을 생성합니다).
FileAppend [, Text, Filename, Encoding]
매개변수
- Text
파일에 추가할 텍스트. 이 텍스트는 라인피드 문자 (`n)를 포함해 새줄을 시작할 수도 있습니다. 게다가, 기다란 한줄은 계속 섹션을 이용하여 더 짧은 여러 줄로 분리할 수 있습니다.
Text가 비어 있으면, Filename이 임시 파일로 생성됩니다 (그러나 그 파일이 이미 존재하면, 그의 수정 시간이 갱신됩니다).
Text가 %ClipboardAll%이거나 이전에 ClipboardAll의 값이 할당된 변수라면, Filename은 무조건 그 클립보드의 전체 내용으로 덮어쓰기 됩니다 (즉, FileDelete가 필요하지 않습니다).
- Filename
-
추가될 파일의 이름. 절대 경로가 지정되어 있지 않으면 %A_WorkingDir%에 있다고 간주됩니다.
이진 모드: 텍스트 모드가 아니라 이진 모드로 추가하려면, 별표를 파일이름 앞에 추가하십시오. 이렇게 하면 각 라인피드 문자 (`n)가 윈도우즈의 표준 CR+LF 대신에 한개짜리 라인피드 (LF)가 씌여집니다. 예를 들어:
*C:\My Unix File.txt
.파일이 (파일-읽기 회돌이 안에 있어서) 아직 열려 있지 않은 경우, Text에 캐리지 리턴과 라인피드가 쌍으로 들어 있다면 (`r`n) 그 파일은 자동으로 이진 모드로 열립니다. 다른 말로, 앞 문단에서 기술한 별표 옵션이 자동으로 효력을 발휘합니다. 그렇지만 Text에 `r`n가 들어 있을 때 별표를 지정하면 수행성능이 향상됩니다. 왜냐하면 프로그램이 Text를 스캔해 `r`n을 찾을 필요가 없기 때문입니다.
표준 출력 (stdout): 별표 (*)를 Filename에 지정하면 Text는 표준 출력 (stdout)으로 전송됩니다. 그런 텍스트는 파일에 방향전환할 수 있고, 또다른 EXE로 파이프 처리해 보낼 수 있으며, 또는 환상적인 편집기로 나포할 수 있습니다. 예를 들어, 다음은 명령어 프롬프트에서 타자하면 유효합니다:
"%ProgramFiles%\AutoHotkey\AutoHotkey.exe" "My Script.ahk" >"Error Log.txt"
그렇지만, 표준출력으로 전송된 텍스트는 처음 기동된 프롬프트에 나타나지 않습니다. 이 문제는 스크립트의 출력을 또다른 명령어나 프로그램에 파이프 처리해 우회할 수 있습니다. 예를 들어:
"%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) 스트림으로 전송됩니다.
- 인코딩
[v1.0.90+]: FileEncoding으로 설정된 기본 인코딩을 오버라이드 합니다. Encoding은 같은 형식을 따릅니다.
ErrorLevel
[v1.1.04+] 이 명령어는 실패시 예외를 던질 수 있습니다. 더 자세한 정보는 실행시간 에러를 참조하십시오.
ErrorLevel는 문제가 있으면 1 없으면 0이 설정됩니다.
A_LastError는 운영 체제의 GetLastError() 함수의 결과가 설정됩니다.
논평
기존의 파일을 덮어쓰려면, FileAppend를 사용하기 전에 FileDelete로 지우십시오.
목표 파일은 텍스트가 추가된 후 자동으로 닫힙니다 (단, FileAppend가 파일-읽기/쓰기 회돌이 안에서 단일-매개변수 모드를 사용할 때는 예외입니다).
[v1.0.90+]: FileOpen()을 추가 모드로 사용하는 것이 FileAppend보다 더 섬세하게 제어할 수 있고 계속 파일을 열어 둘 수도 있습니다. 매번 파일을 열고 닫을 필요가 없습니다. 일단 파일이 추가 모드로 열리면 file.Write(string)
를 사용해 추가하면 됩니다. 파일 객체는 RawWrite/RawRead 또는 WriteNum/ReadNum를 통하여 이진 I/O도 지원합니다. 반면에 FileAppend는 오직 텍스트만 지원합니다.
관련 항목
FileOpen/File Object, FileRead, file-reading loop, FileReadLine, IniWrite, FileDelete, OutputDebug, 계속 섹션
예제
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% ; 검토를 위해 로그 기록을 보여줍니다.