ETC/Auto Hotkey

AutoHotkey 스크립트의 핵심, 'If 문' 마스터하기: 자동화의 문을 열다

shimdh 2025. 10. 27. 08:48
728x90

안녕하세요, 자동화 애호가 여러분! 프로그래밍을 처음 접하는 분들이나 AutoHotkey를 활용해 일상을 효율화하려는 분들을 위해 오늘은 특별한 주제를 다뤄보겠습니다. 프로그래밍에서 '흐름 제어'는 명령어가 실행되는 순서를 결정하는 핵심 개념으로, 단순한 반복 작업을 넘어 지능적인 자동화로 이끄는 마법 같은 도구입니다. 특히 AutoHotkey 같은 스크립트 언어에서는 이 흐름 제어를 통해 키보드 단축키, 마우스 제어, 파일 처리 등 다양한 작업을 유연하게 연결할 수 있죠.

그중에서도 'if 문' 은 조건에 따라 스크립트가 '의사 결정'을 내리는 핵심 문법입니다. 예를 들어, "오늘 날씨가 좋으면 알림을 띄우고, 아니면 실내 작업 모드로 전환" 같은 로직을 구현할 수 있어요. 이 글에서는 AutoHotkey의 'if 문'이 무엇인지, 기본부터 고급 활용까지 단계별로 탐구하며, 실제 예시를 통해 여러분의 자동화 스킬을 업그레이드해 보겠습니다. 준비되셨나요? 자동화의 문을 열어보죠!

728x90

'If 문'이란 무엇인가요?

AutoHotkey에서 'if 문'은 특정 조건(표현식) 을 평가한 후, 그 조건이 '참(true)' 일 때만 코드 블록을 실행하는 구조입니다. 조건은 변수 값, 사용자 입력, 파일 존재 여부 등으로 구성될 수 있으며, 결과는 '참' 또는 '거짓(false)'으로 판별됩니다. 이로 인해 스크립트가 정적이지 않고 동적으로 반응할 수 있어요.

예를 들어, 클립보드에 복사된 텍스트가 특정 키워드를 포함하는지 확인해 자동으로 이메일을 작성하거나, 시스템 시간에 따라 백그라운드 음악을 변경하는 식으로 활용할 수 있습니다. 'if 문'은 AutoHotkey 스크립트의 70% 이상에서 등장할 정도로 필수적입니다. 이제 기본 구조부터 알아보죠!

If 문의 기본 구조

AutoHotkey의 'if 문'은 간단하고 직관적입니다. 가장 기본적인 구문은 다음과 같아요:

if (condition) {
    ; 조건이 참일 경우 실행될 코드
}
  • condition: 'true' 또는 'false'를 반환하는 표현식 (예: 변수 비교, 수학 연산 등).
  • {} 중괄호: 조건이 참일 때 실행될 코드 블록. 중괄호를 생략할 수도 있지만, 가독성을 위해 추천합니다.

이 구조를 통해 스크립트는 "만약 ~라면, 이렇게 하자"라는 논리를 구현할 수 있습니다. 이제 실제 예시로 맛보죠!

예시 1: 간단한 비교로 시작하기

가장 기본적인 사용법을 보여주는 예시입니다. 사용자의 나이를 확인해 투표 자격을 알려주는 스크립트예요. (실제로는 입력 폼과 연동해 사용하세요!)

age := 18  ; 변수에 나이 값 할당 (실제로는 InputBox로 입력받을 수 있음)
if (age >= 18) {
    MsgBox, 투표할 수 있습니다.  ; 조건 참: 성공 메시지
} else {
    MsgBox, 아직 투표할 수 없습니다.  ; 조건 거짓: 대안 메시지
}

이 코드를 실행하면 age가 18 이상이면 첫 번째 MsgBox가, 아니면 else 블록의 MsgBox가 나타납니다. else는 조건이 거짓일 때 실행되는 '대안 경로'로, 'if 문'의 완성도를 높여줍니다. 이처럼 간단한 비교 연산자(>=, ==, != 등)를 활용하면 일상 자동화의 기반이 됩니다.

논리 연산자로 조건 결합하기

한 가지 조건으로는 부족하다면? 여러 조건을 연결하세요! AutoHotkey는 논리 연산자를 지원해 복합 조건을 만들 수 있습니다:

  • && (AND): 모든 조건이 참일 때 전체가 참 (예: "비가 오지 않고, 온도가 20도 이상").
  • || (OR): 하나라도 참이면 전체가 참 (예: "커피 또는 차를 마실까?").
  • ! (NOT): 조건을 반전 (예: "비가 오지 않음").

이 연산자들은 스크립트의 논리를 더 정교하게 만들어줍니다. 괄호 ()를 사용해 우선순위를 명확히 하세요.

예시 2: 논리 연산자로 날씨 기반 알림 만들기

외출 계획을 세우는 데 유용한 예시입니다. 온도와 날씨 변수를 활용해 조건을 결합해 보죠:

temperature := 30  ; 현재 온도 (실제로는 API나 센서에서 가져올 수 있음)
isSunny := true   ; 날씨 상태 (true: 맑음, false: 흐림)

if (temperature > 25 && isSunny) {
    MsgBox, 밖에 나가기 좋은 날입니다! 산책 가세요!  ; AND 조건: 둘 다 참
} else {
    MsgBox, 오늘은 실내에 머무는 것이 좋겠습니다. 책 읽기 추천!  ; 하나라도 거짓
}

이 스크립트는 더운 날씨 그리고 맑은 하늘일 때만 긍정 메시지를 띄웁니다. 실제로 날씨 API(예: OpenWeatherMap)를 연동하면 스마트 홈 자동화로 확장할 수 있어요!

중첩 'If 문'과 'Else/ElseIf' 구문

복잡한 시나리오에서는 'if 문'을 중첩하거나 else/elseif를 추가해 계층적 논리를 구축합니다. 이는 코드의 깊이를 더하지 않으면서도 다중 분기를 처리할 수 있게 해줍니다.

중첩 'If 문': 세부 조건 탐구

'if 문' 안에 또 다른 'if 문'을 넣는 방식으로, "큰 조건 → 작은 조건" 구조를 만듭니다. 과도한 중첩은 피하세요 – 가독성이 떨어질 수 있어요!

예시 3: 중첩 If로 성적 등급 자동 분류

학생 성적 관리 도구로 활용할 수 있는 예시입니다:

score := 85  ; 점수 입력 (실제로는 파일이나 GUI에서 로드)

if (score >= 90) {
    MsgBox, 등급: A  ; 최고 등급
} else if (score >= 80) {
    MsgBox, 등급: B  ; 우수 등급
} else if (score >= 70) {
    MsgBox, 등급: C  ; 보통 등급 (추가 elseif)
} else {
    MsgBox, 등급: F  ; 재수강 추천
}

여기서 else if는 이전 조건이 거짓일 때만 다음 조건을 평가합니다. 순차적 체크로 효율적이에요. 이 패턴은 파일 크기 확인, 네트워크 상태 검사 등에 딱 맞습니다.

'Else' 및 'ElseIf' 구문의 활용: 깔끔한 분기 처리

  • else: 모든 이전 조건이 거짓일 때 '기본 동작'.
  • elseif: 새로운 조건을 추가하며 중첩을 피함.

예시 4: 'ElseIf'로 요일별 생산성 팁 제공

캘린더 앱처럼 동작하는 스크립트예요:

dayOfWeek := "월요일"  ; 오늘 요일 (A_DD 같은 내장 변수로 자동화 가능)

if (dayOfWeek = "토요일" || dayOfWeek = "일요일") {
    MsgBox, 주말입니다! 휴식과 취미 활동을 즐기세요.  ; OR 조건
} elseif (dayOfWeek = "금요일") {
    MsgBox, 거의 주말입니다! 오늘은 가볍게 마무리하세요.  ; 추가 조건
} else {
    MsgBox, 평일입니다. 집중 모드로 생산성을 높이세요!  ; 기본 동작
}

이 예시는 주말/평일 로직을 간결하게 처리합니다. 실제로 시스템 트레이 아이콘으로 매일 팁을 띄우는 도구로 발전시킬 수 있어요!

결론: 'If 문'으로 강력한 자동화 스크립트를!

AutoHotkey의 'if 문'은 단순한 조건문이 아니라, 스크립트의 '뇌' 역할을 합니다. 기본 구조를 익히고 논리 연산자, 중첩, else/elseif를 결합하면, 이메일 필터링부터 게임 매크로, 심지어 AI-like 자동화까지 구현할 수 있어요. 부족한 부분을 채우는 팁으로는: 디버깅 시 MsgBox로 변수 값을 확인하고, 복잡한 조건은 함수로 분리하세요.

728x90