프로그래밍 언어를 사용하여 파일의 path 를 다루는 경우 path 를 합치고 분리하고 하는 과정은 매우 흔한 일입니다.
일단 Autohotkey 를 사용하여 path를 나누는 경우는 SplitPath 라는 명령어를 사용하면 됩니다.
그런데 합치는 경우에는 딱히 전용 함수가 없어서 그냥 string 을 붙여서 만들어야 합니다. 물론 string 을 붙여넣는것도 괜찮지만 잡스러운 처리가 필요한 경우들이 종종 있습니다.
예를 들어 아래 두개의 path 를 그냥 붙이게 된다면~
base := A_WinDir . "\System32\"
rel := "..\Media\test.wav"
fullpath := base . rel ; string 붙이기
아래와 같이 표시가 될 것 입니다. 보시다시피 그냥 문자 붙이기 이므로 .. (점점) 등이 그대로 표시가 됩니다. 위 path 중 rel 변수의 ..(점점) 은 상위 폴더를 의미 하므로 path 를 붙이기 전에 그에 맞게 처리를 해 줘야 합니다.
이런 문제를 쉽게 해결하기 위해서 Windows 내부의 함수를 사용할 수 있고 path 를 붙여 주는 함수로 PathCombine 이라는 함수가 있습니다. 해당 함수는 Shlwapi.dll 파일에 들어 있으므로 DllCall 명령을 통해 사용할 수 있습니다. 해당 함수를 아래와 같이 함수로 만들어서 사용하면 편리할 것입니다.
PathCombine(abs, rel) {
VarSetCapacity(dest, (A_IsUnicode ? 2 : 1) * 300, 1) ; MAX PATH
DllCall("Shlwapi.dll\PathCombine", "UInt", &dest, "UInt", &abs, "UInt", &rel)
Return, dest
}
위 함수를 사용하여 아래와 같이 path 를 join 해 보면~
MsgBox, % PathCombine(base, rel)
아래와 같이 알아서 상위 폴더로 설정하고 path 를 붙여 주는 것을 확인 할 수 있습니다.
Autohotkey DllCall 사용 방법에 대해서는 아래 주소에 메뉴얼이 있으니 확인해 보시기 바랍니다.
https://www.autohotkey.com/docs/commands/DllCall.htm
'programming language > Autohotkey' 카테고리의 다른 글
Autohotkey 로 “작업표시줄 자동 숨기기” Toggle 시키는 방법 (434) | 2019.09.02 |
---|---|
Autohotkey argument 사용 방법 (141) | 2019.08.26 |
Autohotkey 현재 실행되는 프로그램에서 단축키 확인하는 방법 ListHotkeys (472) | 2019.08.19 |
Autohotkey 를 사용하여 단축키로 프로그램을 실행시키고 마우스 위치로 이동시키는 방법 (429) | 2019.08.09 |
Autohotkey 편집기 scite4autohotkey 2 개 이상 여는 방법 (286) | 2019.07.05 |
Autohotkey 를 사용하여 복사 붙여넣기를 잘 하는 다양한 방법 (413) | 2019.02.17 |
Autohotkey 비활성 창 자동화를 위한 준비, Spy 프로그램 다운로드, Window Detective (142) | 2019.02.11 |
미드 보면서 영어 공부하기, 카카오 팟플레이어에서 네이버 사전으로 단어 검색 하기 (150) | 2019.02.08 |
댓글