안녕하세요, 생산성을 극대화하고 싶어하는 자동화 애호가 여러분!
저는 매일 반복되는 지루한 작업을 AHK(AutoHotkey)로 날려버리는 데 열정을 쏟고 있습니다. 오늘은 AHK 스크립팅의 핵심 중 하나인 파일 읽기/쓰기와 클립보드 조작에 대해 깊이 파헤쳐보겠습니다.
AHK는 단순한 핫키 도구가 아니라, 컴퓨터의 '뇌' 역할을 할 수 있는 강력한 스크립팅 언어예요. 특히 파일과 클립보드를 다루면 외부 데이터와의 상호작용이 가능해져서, 로그 관리부터 데이터 마이그레이션까지 모든 게 자동화됩니다.
이 가이드를 따라가다 보면, 여러분의 AHK 프로젝트가 프로 수준으로 업그레이드될 거예요. 초보자도 따라할 수 있도록 단계별로 설명하고, 실전 예시 코드를 곁들여 드릴게요. 자, 시작해볼까요?
AHK 파일 읽기: 숨겨진 데이터를 손안에 담다!
컴퓨터에 저장된 파일은 보물창고 같은 거예요. 설정 파일, 로그 데이터, 심지어 대량의 CSV나 TXT 파일까지 – AHK로 이걸 읽으면 분석, 처리, 자동 입력이 한 방에!
파일 읽기는 보통 세 단계로 진행되며, 안전하고 효율적으로 다루는 게 핵심입니다. 잘못하면 시스템 자원이 고갈되거나 오류가 날 수 있으니 주의하세요.
파일 읽기의 기본 단계
- 파일 열기 (
FileOpen()):FileOpen(경로, "r")로 읽기 모드(r)에서 파일을 엽니다. 이게 성공해야 내용에 접근할 수 있어요. 경로는 절대 경로를 추천합니다 (예:C:\Users\YourName\Documents\data.txt). - 내용 읽기 (
Read()또는ReadLine()):Read(): 파일 전체 또는 지정 바이트를 한 번에 읽을 때. 대용량 파일에는 메모리 부하가 크니 주의!ReadLine(): 한 줄씩 읽어 CSV나 로그 파싱에 딱. 루프와 함께 쓰면 강력해집니다.
- 파일 닫기 (
Close()):
작업 끝나면 무조건file.Close()호출! 이는 파일 잠금을 풀고 자원을 해제해줍니다. 잊으면 다른 앱에서 파일 접근이 막히거나 스크립트가 크래시할 수 있어요.
실전 예시: 텍스트 파일 내용 확인하기
아래 코드는 간단한 TXT 파일을 읽어 메시지 박스로 출력합니다. 파일이 없으면 에러 핸들링도 포함했어요.
; 파일 경로 정의 (자신의 경로로 변경하세요)
filePath := "C:\Users\YourName\Documents\sample.txt"
; 파일을 읽기 모드로 열기
file := FileOpen(filePath, "r")
; 성공 여부 확인
if (file) {
; 전체 내용 한 번에 읽기
content := file.Read()
; 읽은 내용 출력 (MsgBox 대신 ToolTip 등으로 대체 가능)
MsgBox, 0, 파일 내용, % "File Content:`n" . content
; 파일 닫기 (필수!)
file.Close()
} else {
MsgBox, 16, 오류, 파일을 열 수 없습니다: %filePath%
}
이 스크립트를 실행하면 파일 내용이 팝업으로 뜹니다. ReadLine()을 루프로 쓰면 대형 파일도 안전하게 처리할 수 있어요. 팁: UTF-8 인코딩 파일이라면 FileOpen(filePath, "rnUTF-8")처럼 옵션을 추가하세요!
AHK 파일 쓰기: 나만의 데이터베이스를 쌓아가다!
읽기만큼 중요한 게 쓰기죠? AHK로 로그를 남기거나, 웹 스크래핑 결과를 파일로 저장하면 생산성이 폭발합니다. 예를 들어, 매일 작업 결과를 TXT나 CSV에 자동 기록하는 거예요.
쓰기 모드는 덮어쓰기(w) vs 추가(a) 로 나뉘니, 용도에 맞게 선택하세요.
파일 쓰기의 기본 단계
- 파일 열기/생성 (
FileOpen()):"w": 새 파일 생성 or 기존 내용 완전 덮어쓰기. 백업 필수!"a": 끝에 추가. 로그나 히스토리 파일에 최적.
- 데이터 쓰기 (
Write()또는Append()):Write(): 문자열 직접 쓰기. 줄바꿈은\n으로!Append(): 추가 모드에서만 유효, 끝에 붙임.
- 파일 닫기 (
Close()):
변경 사항을 디스크에 플러시(저장)하려면 반드시 필요. 안 하면 데이터가 날아갈 수 있어요.
실전 예시: 새 파일에 텍스트 기록하기
로그 파일처럼 여러 줄을 추가하는 예시입니다. 타임스탬프까지 넣어 실용적으로 만들었어요.
; 출력 파일 경로 정의
outputPath := "C:\Users\YourName\Documents\log.txt"
; 추가 모드로 열기 (기존 내용 유지)
file := FileOpen(outputPath, "a")
; 성공 여부 확인
if (file) {
; 타임스탬프와 메시지 쓰기
currentTime := A_Now ; AHK 내장 변수로 현재 시간
FormatTime, timeStr, %currentTime%, yyyy-MM-dd HH:mm:ss
file.Write("[" . timeStr . "] 작업 완료: 성공!`n")
file.Write("추가 데이터: 이것은 테스트 로그입니다.`n`n") ; 빈 줄 추가
; 파일 닫기
file.Close()
MsgBox, 0, 성공, 로그가 %outputPath%에 저장되었습니다!
} else {
MsgBox, 16, 오류, 파일을 생성/쓰기할 수 없습니다: %outputPath%
}
이 코드를 반복 실행하면 로그가 쌓여요. CSV 쓰기라면 file.Write("데이터1,데이터2n")`처럼 쉼표로 구분하세요. 팁: 대량 데이터는 배치로 쓰면 I/O 부하를 줄일 수 있습니다!
클립보드 작업: 앱 간 스마트한 '다리' 역할하기!
파일이 '영구 저장소'라면, 클립보드는 '임시 메모리'예요. AHK로 클립보드를 다루면 복사-붙여넣기를 초고속으로 자동화할 수 있습니다. 엑셀에서 데이터 뽑아 워드에 붙이는 식으로요!
AHK의 클립보드 기능은 간단하지만 강력 – 텍스트뿐 아니라 이미지까지 지원합니다.
주요 클립보드 함수
Clipboard := value:
값을 클립보드에 직접 할당. Ctrl+C 한 효과!ClipWait(timeout):
클립보드가 채워질 때까지 대기 (기본 1초). 복사 후 붙여넣기 전에 안정성을 더해줍니다.ClipboardAll:
클립보드 전체(서식, 이미지 포함) 백업/복원. 복잡한 데이터 전송에 필수.
실전 예시: 텍스트를 클립보드에 복사하고 붙여넣기
간단 복사부터 실제 붙여넣기까지 – Notepad에 자동 입력하는 버전입니다.
; 복사할 텍스트 정의
textToCopy := "안녕하세요! AHK 클립보드 자동화 예시입니다.`n이 텍스트가 자동으로 붙여넣어집니다."
; 클립보드에 복사
Clipboard := textToCopy
; 복사 확인 (선택적, 2초 대기)
ClipWait, 2
if ErrorLevel {
MsgBox, 16, 오류, 클립보드 복사가 지연되었습니다.
return
}
; Notepad 열기 (이미 열려있다면 Send만)
IfWinNotExist, ahk_class Notepad {
Run, notepad.exe
WinWaitActive, ahk_class Notepad
}
; 붙여넣기 (Ctrl+V)
Send, ^v
MsgBox, 0, 완료, 텍스트가 Notepad에 붙여넣어졌습니다!
이 스크립트는 텍스트를 복사한 후 메모장에 자동 붙여넣습니다. 팁: ClipboardAll로 이미지 복사 시 ClipboardAll := ClipboardAll 백업 후 사용하세요. 보안상 민감 데이터는 즉시 클리어(Clipboard := "")하는 습관 들이세요!
요약: AHK 마스터를 위한 실전 팁!
오늘 배운 파일 읽기/쓰기와 클립보드 조작은 AHK의 'IO(Input/Output) 기초'예요. 이걸 익히면:
- 자동 로그 시스템: 작업 결과를 파일에 쌓아 분석.
- 데이터 전송 자동화: 클립보드로 앱 간 브릿지.
- 에러 핸들링 강화:
if문과try-catch로 안정성 UP.
추가 팁 3가지:
- 인코딩 주의: UTF-8 파일 많아요?
FileEncoding, UTF-8선언으로 문제 해결. - 성능 최적화: 대형 파일은
ReadLine()루프로 chunk 처리. 클립보드는ClipWait로 타이밍 맞추기. - 디버깅 도구: AHK의
ListVars나OutputDebug로 변수 추적. VS Code AHK 확장 추천!
'ETC > Auto Hotkey' 카테고리의 다른 글
| 오토핫키(AHK)로 마스터하는 창 관리: 자동화의 핵심 기술 (0) | 2025.10.27 |
|---|---|
| 오토핫키: 클립보드와 파일 작업을 통한 자동화의 마법! (0) | 2025.10.27 |
| AutoHotkey GUI 디자인: 사용자 친화적인 인터페이스 구축을 위한 필수 가이드 (0) | 2025.10.27 |
| AutoHotkey GUI: 사용자 상호작용을 살아 숨 쉬게 하는 이벤트 핸들링 마스터하기 (0) | 2025.10.27 |
| AutoHotkey GUI: 사용자 친화적인 애플리케이션 개발의 핵심! (0) | 2025.10.27 |