프날 오토핫키 강좌  v2

⚠ 이 강좌는 오토핫키 v2를 다룹니다

지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만, 새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.

93. Loop Files


등산을 할 때 어려운 봉우리를 넘으면 한결 괜찮은 기분을 느낄 수 있습니다. 그리고 그 봉우리가 이 산의 마지막 봉우리였다면 그 기분은 이루 말할 수 없겠지요.

지난 정규식을 끝으로 더이상 프날 오토핫키 강좌의 어려운 부분은 없습니다. 이제 좀 느긋하게, 파일과 관련된 함수 몇 가지만 배우면 99강을 끝으로 강좌가 마무리되게 됩니다. 마지막 남은 한 걸음, 힘내봅시다!

Loop Files

Loop Parse 기억하시나요? 전체 문자열을 구분자를 기준으로 쪼개 순차적으로 반복해주는 제어문이었죠. 오늘 배울 Loop Files도 마찬가지입니다. 문자열을 반복해주는 것이 아닌, 원하는 경로의 파일 목록을 순차 반복해줍니다.

Loop Files, FilePattern [, Mode]
Loop Files의 원형
  • FilePattern: 목록을 가져올 파일 패턴입니다.
  • Mode: 함수의 모드(옵션)입니다.

'파일 패턴'은 특정 파일(여러개일 수 있음)을 나타내는 문자열입니다. 일반적으로 경로/파일명.확장자로 표기하여 단일 파일을 나타낼 수 있으며, '아무래도 좋은' 부분은 * 기호로 대체하여 여러 파일을 대상으로 설정할 수도 있습니다. 예를 들어서 Files/Texts/*.txt는 현재 폴더 기준 Files > Texts 폴더에 있는 모든 txt 파일과 매칭되는 파일 패턴이며, Files/*.*는 Files 폴더 안의 모든 파일(모든 파일명 + 모든 파일 확장자 = 모든 파일)과 매칭됩니다.

'모드'는 기초 강좌인 이곳에서는 문자열 D로 적는 '디렉토리' 모드만 설명합니다. 문자열 D를 이곳에 적으면 가져올 목록에 파일 뿐만 아니라 폴더까지 가져오게 됩니다.

Loop Files 안에서 쓸 수 있는 내장 변수

Loop Parse 안에서 A_LoopField를 썼듯이, Loop Files에서도 읽어온 파일 목록이 담긴 내장 변수가 있습니다.

내장 변수설명
A_LoopFileName파일의 이름
A_LoopFileExt파일의 확장자
A_LoopFilePath파일의 경로 (짧은 버전)
A_LoopFileFullPath파일의 경로 (긴 버전)
A_LoopFileTimeModified파일의 수정 시간
A_LoopFileSize파일의 크기 (바이트)
A_LoopFileSizeKB파일의 수정 시간 (킬로바이트)
A_LoopFileSizeMB파일의 수정 시간 (메가바이트)

모든 내장 변수를 다루진 않았고, 보통은 이름이나 경로 정도만 쓰입니다. 이들은 각 반복마다 각각의 파일과 관련된 정보가 순차적으로 담깁니다. 첫 번째 반복에선 A_LoopFileName에 첫 번째 파일의 이름이, 두 번째엔 두 번째 파일의 이름이... 이런식으로 말이죠.

실습

1. 바탕화면의 모든 파일 이름 순차적으로 가져오기

1Loop Files, A_Desktop "\*.*"
2{
3    MsgBox(A_LoopFileName)
4}
예제 1. 바탕화면의 모든 파일 이름 순차적으로 가져오기

A_Desktop은 바탕화면의 경로가 담긴 내장변수입니다. 예전에 배웠는데, 기억하시나요? 바탕화면의 모든 파일을의 이름을 순차적으로 출력하는 예제입니다.

2. Texts 폴더의 모든 .txt 파일의 이름 가져오기

1Loop Files, "Texts\*.txt"
2{
3    MsgBox(A_LoopFileName)
4}
예제 2. 텍스트 파일 이름 순차적으로 가져오기

오토핫키에서 파일 경로는 상대 경로가 기준입니다. 현재 스크립트가 실행된 경로를 기준으로 탐색한다는 것인데요, 따라서 위 예제와 같이 Texts라고 적으면 현재 오토핫키 스크립트의 실행 경로의 Texts 폴더를 의미하고, *.txt를 통하여 .txt 확장자를 가진 파일만 대상으로 반복하게 하였습니다.

다음 강은 훨씬 쉽습니다.

질문하러 가기