ETC/Auto Hotkey

AutoHotkey 기본 문법: 변수, 연산자, 조건문, 반복문

shimdh 2025. 2. 4. 23:03
728x90

1. 변수: 데이터 저장과 관리

변수는 프로그래밍에서 데이터를 저장하고 관리하는 데 사용됩니다. AutoHotkey에서는 변수를 통해 스크립트 내에서 값을 동적으로 조작할 수 있습니다. 변수를 올바르게 사용하면 스크립트의 유연성과 효율성이 크게 향상됩니다.

1.1 변수의 정의와 선언

변수는 프로그램이 실행되는 동안 데이터를 저장하기 위한 메모리 공간입니다. AutoHotkey에서는 변수를 선언할 때 특별한 키워드가 필요하지 않습니다. 단순히 이름을 지정하고 값을 할당하면 됩니다.

myVariable := 10 ; myVariable이라는 변수를 생성하고 10으로 초기화

변수는 숫자, 문자열, 배열 등 다양한 데이터 유형을 저장할 수 있습니다. 이는 AutoHotkey의 유연성을 보여주는 중요한 특징 중 하나입니다.

1.2 변수 활용 예제

두 숫자의 합계를 구하는 예제입니다.

num1 := 5
num2 := 7
sum := num1 + num2 ; sum에 num1과 num2의 합을 저장
MsgBox % "The sum is: " . sum ; 메시지 박스로 결과 출력

이 예제에서는 num1num2라는 변수에 각각 5와 7을 할당하고, 두 변수의 합을 sum에 저장한 후 메시지 박스로 결과를 출력합니다. 이처럼 변수를 사용하면 데이터를 쉽게 저장하고 재사용할 수 있습니다.

1.3 변수 이름 규칙

변수 이름을 지을 때는 다음과 같은 규칙을 따라야 합니다:

  • 첫 글자는 문자여야 하며, 이후에는 문자와 숫자 모두 사용할 수 있습니다.
  • 공백이나 특수 문자를 포함할 수 없습니다 (단, 언더스코어(_)는 가능).
  • 대소문자를 구분하지 않지만, 일관성을 유지하는 것이 좋습니다.

예를 들어, myVariable, user_name, totalCount는 유효한 변수 이름이지만, 1stVariable이나 my-variable은 유효하지 않습니다.

1.4 전역 변수와 지역 변수

  • 전역 변수: 스크립트 전체에서 접근 가능합니다.
  • 지역 변수: 함수 내부에서만 유효합니다.
globalVar := "I am global!" 

MyFunction() {
    localVar := "I am local!" 
    MsgBox % localVar ; 지역 변수 출력
    MsgBox % globalVar ; 전역 변수 출력
}
MyFunction()

이 예제에서 globalVar는 스크립트 전체에서 접근할 수 있지만, localVarMyFunction 함수 내부에서만 유효합니다. 함수 외부에서 localVar에 접근하려고 하면 오류가 발생합니다.


2. 연산자: 데이터 조작과 비교

연산자는 두 개 이상의 값을 비교하거나 조작하는 데 사용됩니다. AutoHotkey에서는 다양한 연산자를 제공하여 데이터 간의 관계를 설정하고 계산을 수행합니다.

2.1 연산자의 종류

  • 산술 연산자: 숫자 계산
    a := 10
    b := 5
    sum := a + b ; sum은 15
    difference := a - b ; difference는 5
    product := a * b ; product는 50
    quotient := a / b ; quotient는 2
  • 비교 연산자: 값 비교
    x := 20
    y := 30
    if (x < y) {
        MsgBox, "x는 y보다 작습니다."
    }
  • 논리 연산자: 조건 결합
    isTrue := true
    isFalse := false
    if (isTrue && !isFalse) {
        MsgBox, "모든 조건이 참입니다."
    }
  • 문자열 연결 연산자: 문자열 결합
    firstName := "홍"
    lastName := "길동"
    fullName := firstName . lastName ; fullName은 "홍길동"

2.2 연산자 우선 순위

연산자는 우선 순위를 가지며, 산술 연산자가 비교 및 논리 연산자보다 높은 우선 순위를 가집니다.

result := 5 + 3 * 2 ; result는 11 (곱셈이 덧셈보다 먼저)

2.3 실용적인 활용 사례

연산자는 실제로 다양한 상황에서 유용하게 활용됩니다. 예를 들어, 사용자 입력을 처리하거나 반복문과 함께 사용할 수 있습니다.

inputValue := InputBox("숫자를 입력하세요:")
if (inputValue >=0 && inputValue <=100) {
     MsgBox, "유효한 숫자입니다!"
} else {
     MsgBox, "잘못된 숫자 범위입니다."
}

이 예제에서는 사용자로부터 입력받은 값이 0에서 100 사이인지 확인하고, 그 결과에 따라 메시지를 출력합니다.


3. 조건문: 프로그램 흐름 제어

조건문은 특정 조건이 참인지 거짓인지를 평가하고, 그 결과에 따라 다른 코드를 실행합니다. AutoHotkey에서는 if, else if, else, Switch 등의 조건문을 제공합니다.

3.1 기본 조건문 (if)

number := -5
if (number > 0) {
    MsgBox, "양수입니다."
} else if (number < 0) {
    MsgBox, "음수입니다."
} else {
    MsgBox, "영(0)입니다."
}

3.2 여러 조건 결합

age := 20
isStudent := true
if (age < 30 && isStudent) {
    MsgBox, "학생 할인 적용 가능합니다."
} else {
    MsgBox, "정상 요금 적용됩니다."
}

3.3 Switch 문

fruit := "사과"
Switch fruit {
    case "사과":
        MsgBox, "사과는 빨간색 과일입니다."
        break
    case "바나나":
        MsgBox, "바나나는 노란색 과일입니다."
        break
    default:
        MsgBox, "알 수 없는 과일입니다."
}

4. 반복문: 작업 반복 수행

반복문은 특정 작업을 여러 번 수행할 수 있게 해줍니다. AutoHotkey에서는 Loop, While, For 등의 반복문을 제공합니다.

4.1 Loop

Loop, 5 {
    MsgBox % "현재 숫자: " A_Index ; 1부터 5까지 출력
}

4.2 While

counter := 5
While (counter > 0) {
    MsgBox % "카운터 값: " counter
    counter-- ; 카운터 감소
}

4.3 For

myArray := ["사과", "바나나", "체리"]
For index, value in myArray {
    MsgBox % index ": " value ; 배열 요소 출력
}

5. 고급 활용: 변수와 연산자, 조건문, 반복문의 조합

이제까지 배운 변수, 연산자, 조건문, 반복문을 조합하여 더 복잡한 스크립트를 작성할 수 있습니다. 예를 들어, 사용자로부터 여러 개의 숫자를 입력받아 평균을 계산하는 스크립트를 작성해보겠습니다.

total := 0
count := 0

Loop {
    input := InputBox("숫자를 입력하세요 (종료하려면 'q' 입력):")
    if (input = "q") {
        break
    }
    if (input is number) {
        total += input
        count++
    } else {
        MsgBox, "숫자를 입력해주세요."
    }
}

if (count > 0) {
    average := total / count
    MsgBox % "평균값은 " . average . "입니다."
} else {
    MsgBox, "입력된 숫자가 없습니다."
}

이 스크립트는 사용자로부터 숫자를 입력받아 총합과 개수를 계산하고, 평균값을 출력합니다. 사용자가 'q'를 입력하면 반복문을 종료하고 결과를 출력합니다.


6. 실용적인 예제: 파일 처리 자동화

AutoHotkey를 사용하여 파일 처리 작업을 자동화할 수도 있습니다. 예를 들어, 특정 폴더 내의 모든 텍스트 파일을 읽어서 특정 단어를 검색하고, 그 결과를 로그 파일에 저장하는 스크립트를 작성해보겠습니다.

searchWord := "AutoHotkey"
logFile := "search_log.txt"

; 폴더 내의 모든 파일을 순회
Loop, Files, C:\MyFolder\*.txt
{
    filePath := A_LoopFileFullPath
    FileRead, content, %filePath%

    ; 특정 단어 검색
    if (InStr(content, searchWord)) {
        logEntry := "파일: " . filePath . "에서 단어를 찾았습니다."
        FileAppend, %logEntry%`n, %logFile%
    }
}

MsgBox, "검색이 완료되었습니다. 결과는 " . logFile . "에 저장되었습니다."

이 스크립트는 C:\MyFolder 폴더 내의 모든 텍스트 파일을 읽어서 AutoHotkey라는 단어가 포함된 파일을 찾고, 그 결과를 search_log.txt 파일에 저장합니다.


7. 결론

AutoHotkey의 기본 문법인 변수, 연산자, 조건문, 반복문은 스크립트 작성의 핵심 요소입니다. 이들을 잘 이해하고 활용하면 다양한 작업을 자동화하고, 복잡한 로직을 구현할 수 있습니다. 위의 예제들을 참고하여 직접 스크립트를 작성해 보시길 추천드립니다. AutoHotkey를 통해 일상의 반복적인 작업을 자동화하고, 더 나은 생산성을 경험해보세요. Happy coding! 😊

728x90