오늘은 오토핫키를 이용해서 특정 폴더 이하에 있는 특정 종류의 파일들을 정리하는 프로그램을 만들고자 합니다.
기본적으로 UI를 구성해야 할텐데 간단히 폴더를 입력받을 수 있게 EDIT창과 폴더 선택하는 버튼을 주고, 어떤 종류의 확장자를 지울지 입력하는 EDIT창 및 DELETE액션을 수행하라는 버튼 그리고 결과창으로 구성하겠습니다.
아래는 GUI내용입니다.
Gui, Font, Bold
Gui, Add, Text, x20 y10 w100 h20, Folder ;
Gui, Add, Edit, x120 y10 w250 h20 vstrFolder ;
Gui, Add, Button, x380 y10 w60 h20, Find ;
Gui, Add, Text, x20 y40 w100 h20, Suffix ;
Gui, Font, cRed Bold
Gui, Add, Text, x120 y40 w100 h20, Separator:, ;
Gui, Font, cBlack Bold
Gui, Add, Edit, x20 y65 w450 h65 vstrLists ;
Gui, Add, Text, x20 y140 w200 h20, ex) *.bak, *.tmp* ;
Gui, Add, Button, x380 y140 w60 h20 vBtnDelete, Delete ;
Gui, Add, Edit, x20 y165 w450 h200 vstrResult ;
Gui, Show, ,File Delete V0.1
이제는 FIND버튼을 눌렀을때 해야 하는 일입니다. 순수하게 폴더만 지정하면 되므로 다음과 같이 진행합니다.
ButtonFind:
{
FileSelectFolder, Foldername
GuiControl, ,strFolder, %Foldername%
}
다음은 DELETE버튼을 눌렀을때 하는 일입니다. 선택된 폴더명 이하에 있는 특정 확장자들을 순차적으로 찾아서 지워줘야 합니다. 따라서 확장자별로 LOOP를 한번씩 돌면서 확장자에 해당하는 파일들별로 각각 지워주는 액션을 하면 됩니다. 여기서 Loop문 마지막에 R옵션이 하위 폴더별로 모두 찾으면서 액션을 진행합니다. 다음과 같이 진행합니다.
ButtonDelete:
{
Gui, Submit, nohide
SetWorkingDir, %strFolder%
strRec = ================================
Loop, parse , strLists, `,
{
cnt = 0
ext =%A_LoopField%
Loop, Files, %ext%, R
{
strResult = %strResult%%A_LoopFileLongPath%`n
; strResult .= A_LoopFileLongPath `n
FileDelete, %A_LoopFileLongPath%
GuiControl, ,strResult, %strResult%
cnt = %A_index%
}
strRec = %strRec%`n%ext%: %cnt% file(s) deleted
}
strRec = %strRec%`n================================
strResult = %strResult%%strRec%
GuiControl, ,strResult, %strResult%
Msgbox, File Deleting completed.
}
마지막으로는 esc키를 누를때 프로그램을 종료하는 부분입니다.
ButtonEnd:
{
ExitApp
}
return
#IfWinActive ahk_class AutoHotkeyGUI
ESC::goto, ButtonEnd
return
#IfWinActive
전체 프로그램을 첨부합니다.