ETC/Auto Hotkey

오토핫키 스크립트, 반복문과 조건문으로 지능을 더하다!

shimdh 2025. 10. 26. 10:06
728x90

안녕하세요, 자동화 애호가 여러분! 매일 반복되는 지루한 작업에 지쳐 계신가요? 키보드와 마우스를 대신해 주는 오토핫키(AutoHotkey)가 이미 여러분의 든든한 조력자라면, 이제 한 걸음 더 나아가 보세요. 반복문(Loops)조건문(Conditionals) 을 활용하면 단순한 '키 입력 자동화'에서 벗어나, 상황에 따라 '지능적으로 반응하는' 스마트 스크립트를 만들 수 있습니다.

이 글에서는 오토핫키의 핵심 프로그래밍 개념인 반복문과 조건문을 자세히 탐구하겠습니다. 초보자도 쉽게 따라할 수 있도록 실전 예제 코드를 포함했으니, 함께 따라 해보세요. 이 기술을 익히면 파일 처리, 사용자 입력 검증, 심지어 간단한 게임 로직까지 구현할 수 있을 거예요. 자, 시작해 볼까요?

728x90

반복문: 효율적인 작업 자동화의 핵심

반복문은 '같은 작업을 여러 번' 수행할 때 필수적입니다. 코드를 복사-붙여넣기 하지 않고도, 루프(Loop)를 통해 효율적으로 자동화할 수 있어요. 오토핫키에는 상황별로 적합한 세 가지 주요 반복문이 있습니다. 각 문법과 활용 팁을 예제와 함께 알아보죠.

1. While 반복문: 조건이 참인 동안 끝없이 반복

While 루프는 '특정 조건이 만족되는 동안' 코드를 반복합니다. 예를 들어, 무한 반복을 피하기 위해 카운터 변수를 사용해 제어할 수 있어요. 이는 센서 데이터 모니터링이나 사용자 응답 대기 같은 동적 작업에 딱 맞아요.

count := 0  ; 카운터 초기화
While (count < 5) {  ; count가 5 미만일 때 반복
    MsgBox, Count is: %count%  ; 메시지 박스 표시
    count++  ; count를 1 증가
}

이 코드를 실행하면 "Count is: 0"부터 "Count is: 4"까지 다섯 번의 메시지 박스가 순서대로 나타납니다. : 무한 루프를 방지하려면 항상 종료 조건을 명확히 하세요!

2. Loop 명령어: 정해진 횟수만큼 또는 조건까지 반복

Loop은 가장 간단한 반복문으로, 고정 횟수 반복이나 Break로 조기 종료가 가능합니다. 파일 목록 처리나 클릭 반복 같은 고정 작업에 유용하죠.

Loop, 5 {  ; 5회 반복
    MsgBox, This loop runs %A_Index% time(s).  ; A_Index는 현재 반복 횟수
}

실행 결과: "This loop runs 1 time(s)."부터 "5 time(s)."까지 표시됩니다. 고급 팁: Loop, Parse, 문자열처럼 문자열을 파싱할 때도 활용하세요. 예를 들어, 쉼표로 구분된 목록을 순회할 수 있어요.

3. For 반복문: 배열이나 목록을 순회하며 처리

For 루프는 배열(Array)이나 객체를 순회할 때 최적화되어 있습니다. 데이터베이스나 목록 기반 작업(예: 엑셀 행 처리)에 강력해요.

myArray := ["apple", "banana", "cherry"]  ; 배열 정의
For index, value in myArray {  ; 각 요소 순회
    MsgBox, Item %index%: %value%  ; 인덱스와 값 출력
}

결과: "Item 1: apple", "Item 2: banana", "Item 3: cherry" 순으로 표시됩니다. : 오토핫키 v2부터 배열 지원이 강화되었으니, 최신 버전으로 업데이트하세요!

조건문: 스크립트에 지능을 불어넣다

조건문은 '만약 ~라면' 논리를 구현합니다. 스크립트가 환경(예: 시간, 입력값)에 따라 다르게 동작하게 해주죠. 이는 자동화의 '뇌' 역할을 합니다.

If 문: 기본적인 조건 판단과 분기

If는 가장 직관적인 조건문으로, Else나 Else If와 함께 사용해 다중 분기를 만들 수 있습니다. 사용자 나이 확인이나 파일 존재 여부 검사에 필수예요.

age := 18  ; 변수 설정 (실제로는 InputBox로 입력받을 수 있음)
if (age >= 18) {
    MsgBox, You are eligible to vote!  ; 조건 참 시 실행
} else {
    MsgBox, Sorry, you must be at least 18 years old.  ; 조건 거짓 시 실행
}

확장 팁: 다중 조건은 && (AND), || (OR)로 연결하세요. 예: if (age >= 18 && country = "KR").

반복문과 조건문의 결합: 복잡한 논리 구현

이 두 개념을 합치면? 진짜 마법이 일어나요! 루프 안에서 조건을 검사하며 각 항목을 '선별' 처리할 수 있습니다. 아래 예제는 숫자 배열을 순회하며 짝/홀수를 구분합니다.

numbers := [1, 2, 3, 4, 5]  ; 숫자 배열 정의
For index, number in numbers {
    if (Mod(number, 2) = 0) {  ; Mod()로 나머지 계산 (짝수 확인)
        MsgBox, %number% is even.  ; 짝수 처리
    } else {
        MsgBox, %number% is odd.  ; 홀수 처리
    }
}

결과: "1 is odd.", "2 is even." 등 순차 출력. 실전 팁: 중첩 루프(루프 안에 루프)로 2D 배열이나 그리드 처리를 해보세요. 성능을 위해 Sleep 명령어로 지연을 추가하면 안정적입니다.

실용적인 적용: 오토핫키의 무한한 가능성

이제 이론에서 실전으로! 반복문과 조건문을 결합하면 오토핫키가 'AI 같은' 도우미가 됩니다. 아래는 실제 활용 사례입니다:

  • 작업 자동화: 폴더 내 파일 목록을 루프로 순회하며, If로 '특정 확장자(.txt)만' 복사하세요. 예: 백업 스크립트.
  • 사용자 입력 유효성 검사: InputBox로 입력받은 값을 While 루프와 If로 검증. 숫자가 아닌 입력 시 재요청!
  • 게임/앱 로직: For 루프로 인벤토리 아이템을 검사하고, If로 '레벨 >= 10' 조건 시 보너스 지급.
  • 웹 스크래핑 보조: Loop로 페이지 클릭 반복, If로 '로딩 완료' 확인 후 다음 단계.

이 기능들은 오토핫키 포럼(autohotkey.com)에서 공유되는 스크립트에서 자주 보입니다. 직접 실험하며 커스터마이징하세요!

 

728x90