ETC/Auto Hotkey

오토핫키(AutoHotkey) 완전 정복: 파일과 클립보드 활용으로 자동화 마스터 되기!

shimdh 2025. 10. 27. 13:44
728x90

안녕하세요, 생산성을 극대화하고 싶어하는 자동화 애호가 여러분!
저는 매일 반복되는 지루한 작업을 AHK(AutoHotkey)로 날려버리는 데 열정을 쏟고 있습니다. 오늘은 AHK 스크립팅의 핵심 중 하나인 파일 읽기/쓰기클립보드 조작에 대해 깊이 파헤쳐보겠습니다.
AHK는 단순한 핫키 도구가 아니라, 컴퓨터의 '뇌' 역할을 할 수 있는 강력한 스크립팅 언어예요. 특히 파일과 클립보드를 다루면 외부 데이터와의 상호작용이 가능해져서, 로그 관리부터 데이터 마이그레이션까지 모든 게 자동화됩니다.
이 가이드를 따라가다 보면, 여러분의 AHK 프로젝트가 프로 수준으로 업그레이드될 거예요. 초보자도 따라할 수 있도록 단계별로 설명하고, 실전 예시 코드를 곁들여 드릴게요. 자, 시작해볼까요?

728x90

AHK 파일 읽기: 숨겨진 데이터를 손안에 담다!

컴퓨터에 저장된 파일은 보물창고 같은 거예요. 설정 파일, 로그 데이터, 심지어 대량의 CSV나 TXT 파일까지 – AHK로 이걸 읽으면 분석, 처리, 자동 입력이 한 방에!
파일 읽기는 보통 세 단계로 진행되며, 안전하고 효율적으로 다루는 게 핵심입니다. 잘못하면 시스템 자원이 고갈되거나 오류가 날 수 있으니 주의하세요.

파일 읽기의 기본 단계

  1. 파일 열기 (FileOpen()):
    FileOpen(경로, "r")로 읽기 모드(r)에서 파일을 엽니다. 이게 성공해야 내용에 접근할 수 있어요. 경로는 절대 경로를 추천합니다 (예: C:\Users\YourName\Documents\data.txt).
  2. 내용 읽기 (Read() 또는 ReadLine()):
    • Read(): 파일 전체 또는 지정 바이트를 한 번에 읽을 때. 대용량 파일에는 메모리 부하가 크니 주의!
    • ReadLine(): 한 줄씩 읽어 CSV나 로그 파싱에 딱. 루프와 함께 쓰면 강력해집니다.
  3. 파일 닫기 (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) 로 나뉘니, 용도에 맞게 선택하세요.

파일 쓰기의 기본 단계

  1. 파일 열기/생성 (FileOpen()):
    • "w": 새 파일 생성 or 기존 내용 완전 덮어쓰기. 백업 필수!
    • "a": 끝에 추가. 로그나 히스토리 파일에 최적.
  2. 데이터 쓰기 (Write() 또는 Append()):
    • Write(): 문자열 직접 쓰기. 줄바꿈은 \n으로!
    • Append(): 추가 모드에서만 유효, 끝에 붙임.
  3. 파일 닫기 (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의 클립보드 기능은 간단하지만 강력 – 텍스트뿐 아니라 이미지까지 지원합니다.

주요 클립보드 함수

  1. Clipboard := value:
    값을 클립보드에 직접 할당. Ctrl+C 한 효과!
  2. ClipWait(timeout):
    클립보드가 채워질 때까지 대기 (기본 1초). 복사 후 붙여넣기 전에 안정성을 더해줍니다.
  3. 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가지:

  1. 인코딩 주의: UTF-8 파일 많아요? FileEncoding, UTF-8 선언으로 문제 해결.
  2. 성능 최적화: 대형 파일은 ReadLine() 루프로 chunk 처리. 클립보드는 ClipWait로 타이밍 맞추기.
  3. 디버깅 도구: AHK의 ListVarsOutputDebug로 변수 추적. VS Code AHK 확장 추천!
728x90