ETC/Auto Hotkey

AutoHotkey를 활용한 시스템 통합 및 자동화: 파일, 윈도우, 프로세스 관리

shimdh 2025. 2. 5. 13:55
728x90

1. 파일 및 디렉토리 조작

파일과 폴더를 생성, 수정, 삭제하는 작업은 자동화의 기본입니다. AutoHotkey를 사용하면 이러한 작업을 간단한 스크립트로 처리할 수 있습니다.

1.1 파일 생성 및 읽기

; 파일 생성
FileAppend, "Hello World!", C:\example\hello.txt

; 파일 읽기
FileRead, fileContent, C:\example\hello.txt
MsgBox % fileContent

1.2 파일 삭제

FileDelete, C:\example\hello.txt

1.3 디렉토리 생성 및 목록 가져오기

; 디렉토리 생성
IfNotExist, C:\example\newFolder {
    FileCreateDir, C:\example\newFolder
}

; 디렉토리 목록 가져오기
Loop, C:\example\*.* {
    MsgBox % A_LoopFileName ; 각 파일 이름 출력
}

1.4 디렉토리 삭제

DirRemove("C:\example\oldFolder")

DirRemove(path) {
    Loop, Files, % path "\*.*", R ; 하위 폴더 포함
        FileDelete A_LoopFileFullPath ; 각 항목 삭제
    FileRemoveDir path ; 빈 폴더 제거
}

1.5 파일 및 디렉토리 조작의 활용 예시

1.5.1 백업 스크립트 작성

BackupFiles() {
    Source := "C:\important_files"
    Destination := "D:\backup"

    IfNotExist(Destination) {
        FileCreateDir Destination
    }

    Loop, Files, % Source "\*.*" {
        FileCopy A_LoopFileFullPath, Destination "\" A_LoopFileName,,1 ; 덮어쓰기 허용
    }
}

BackupFiles()

1.5.2 정기적인 청소 작업

; 매일 임시 파일 삭제
SetTimer, CleanTempFiles, 86400000 ; 24시간마다 실행

CleanTempFiles:
FileDelete, C:\Windows\Temp\*.*
Return

2. 윈도우 관리 및 제어

윈도우 운영 체제에서 창을 관리하고 제어하는 작업은 AutoHotkey로 쉽게 자동화할 수 있습니다.

2.1 창 활성화 및 숨기기

; Notepad 창 활성화
IfWinExist, Untitled - Notepad {
    WinActivate ; 창 활성화
}

; 창 숨기기 및 보이기
WinHide, Untitled - Notepad ; 노트패드 숨김
Sleep, 2000 ; 2초 대기
WinShow, Untitled - Notepad ; 다시 보이기

2.2 윈도우 크기 조정 및 이동

; 노트패드를 화면 중앙에 위치시키고 크기 조정
IfWinExist, Untitled - Notepad {
    WinMove, Untitled - Notepad,, (A_ScreenWidth // 2) - (800 // 2), (A_ScreenHeight // 2) - (600 // 2), 800, 600
}

2.3 특정 버튼 클릭

; '저장' 버튼 클릭 (버튼 텍스트가 "Save"인 경우)
ControlClick, Button1, Untitled - Notepad

2.4 윈도우 관리의 활용 예시

2.4.1 다중 창 관리

; 여러 창을 번갈아가며 활성화
IfWinExist, Untitled - Notepad {
    WinActivate
    Sleep, 1000
}
IfWinExist, Calculator {
    WinActivate
    Sleep, 1000
}

2.4.2 창 자동 정렬

; 여러 창을 화면에 균등하게 배치
WinMove, Untitled - Notepad,, 0, 0, A_ScreenWidth // 2, A_ScreenHeight
WinMove, Calculator,, A_ScreenWidth // 2, 0, A_ScreenWidth // 2, A_ScreenHeight

3. 프로세스 및 서비스 자동화

반복적인 프로세스나 서비스를 자동화하면 시간을 절약하고 오류를 줄일 수 있습니다.

3.1 파일 백업 자동화

; 매일 정해진 시간에 파일 백업
SetTimer, BackupFiles, 86400000 ; 24시간마다 실행

BackupFiles:
FileCopy, C:\important_files\*.*, D:\backup\*.*, 1 ; 덮어쓰기 허용
Return

3.2 API 호출을 통한 데이터 수집

; 웹 서비스에서 데이터 받아오기
url := "https://api.example.com/data"
response := HttpRequest(url) ; HTTP GET 요청 (함수 정의 필요)

MsgBox % response ; 응답 내용 표시

3.3 불필요한 프로그램 종료

; 메모장이 열려 있으면 종료
IfWinExist, Notepad {
    WinClose ; 메모장 닫기
}

3.4 프로세스 및 서비스 자동화의 활용 예시

3.4.1 정기적인 데이터 수집

; 매일 특정 시간에 데이터 수집
SetTimer, CollectData, 86400000 ; 24시간마다 실행

CollectData:
url := "https://api.example.com/data"
response := HttpRequest(url)
FileAppend, %response%, C:\data\log.txt
Return

3.4.2 시스템 상태 모니터링

; CPU 사용률이 특정 값 이상이면 경고
Loop {
    CPUUsage := GetCPUUsage() ; CPU 사용률을 가져오는 함수 (정의 필요)
    if (CPUUsage > 90) {
        MsgBox CPU 사용률이 90%를 초과했습니다!
    }
    Sleep, 60000 ; 1분마다 체크
}

4. 고급 활용 예시

4.1 핫스트링을 활용한 빠른 입력

; 자주 사용하는 문구 등록
::안녕하세요::안녕하세요! 어떻게 도와드릴까요?

4.2 사용자 정의 함수를 통한 복잡한 작업 자동화

; 복잡한 작업을 함수로 정의
BackupAndClean() {
    ; 파일 백업
    FileCopy, C:\important_files\*.*, D:\backup\*.*, 1

    ; 임시 파일 삭제
    FileDelete, C:\Windows\Temp\*.*

    ; 로그 파일 생성
    FileAppend, Backup and clean completed at %A_Now%, C:\log\backup_log.txt
}

; 매일 자정에 실행
SetTimer, BackupAndClean, 86400000

4.3 GUI를 활용한 사용자 인터페이스 구성

; 간단한 GUI 생성
Gui, Add, Button, gBackup, 백업 실행
Gui, Add, Button, gClean, 청소 실행
Gui, Show

Backup:
BackupFiles()
Return

Clean:
CleanTempFiles()
Return

5. 추가 고급 기능 및 활용

5.1 스크립트 최적화

스크립트의 성능을 최적화하기 위해 다음과 같은 방법을 사용할 수 있습니다:

  • 변수 사용 최소화: 불필요한 변수 사용을 줄여 메모리 사용량을 최소화합니다.
  • 루프 최적화: 루프 내에서 불필요한 작업을 줄여 실행 시간을 단축합니다.
; 최적화된 루프 예제
Loop, 1000 {
    ; 최소한의 작업만 수행
    Sleep, 10
}

5.2 스크립트 모듈화

스크립트를 모듈화하여 재사용성을 높일 수 있습니다. 각 기능을 별도의 함수로 정의하고 필요할 때 호출하는 방식입니다.

; 모듈화 예제
BackupFiles() {
    ; 백업 로직
}

CleanTempFiles() {
    ; 청소 로직
}

; 메인 스크립트
BackupFiles()
CleanTempFiles()

5.3 스크립트 오류 처리

스크립트 실행 중 발생할 수 있는 오류를 처리하여 안정성을 높일 수 있습니다.

; 오류 처리 예제
Try {
    FileRead, fileContent, C:\example\hello.txt
} Catch {
    MsgBox 파일을 읽는 중 오류가 발생했습니다!
}

6. 실제 적용 사례

6.1 업무 자동화

  • 보고서 생성: 매일 특정 시간에 데이터를 수집하여 보고서를 자동으로 생성합니다.
  • 이메일 발송: 정기적으로 이메일을 발송하는 스크립트를 작성합니다.
; 이메일 발송 예제
SendEmail() {
    ; 이메일 발송 로직
}

SetTimer, SendEmail, 86400000 ; 24시간마다 실행

6.2 시스템 모니터링

  • 리소스 사용량 모니터링: CPU, 메모리 사용량을 모니터링하고 특정 임계값을 초과하면 경고를 발송합니다.
  • 로그 분석: 시스템 로그를 분석하여 특정 이벤트가 발생하면 알림을 보냅니다.
; 리소스 모니터링 예제
MonitorResources() {
    CPUUsage := GetCPUUsage()
    if (CPUUsage > 90) {
        MsgBox CPU 사용률이 90%를 초과했습니다!
    }
}

SetTimer, MonitorResources, 60000 ; 1분마다 실행

결론

AutoHotkey를 활용한 시스템 통합 및 자동화는 반복적인 작업을 줄이고 생산성을 극대화하는 데 매우 효과적입니다. 파일 및 디렉토리 조작, 윈도우 관리, 프로세스 자동화 등 다양한 기능을 통해 업무 환경을 더 스마트하게 만들 수 있습니다. 위의 예제들을 참고하여 자신만의 자동화 스크립트를 작성해 보세요. 이를 통해 더 나은 업무 효율성을 경험할 수 있을 것입니다!

728x90