2016. 3. 9.

자료 백업용 프로그램

[출처:http://autohotkey.co.kr/b/1-460]


setformat, float, 3.2
fileselectfolder, drive, ,0,백업할 폴더를 선택하세요^^
stringlen, len, drive   ;뒤에 루프에서 하위 폴더명을 획득하기 위함




include=1  ;하위 폴더의 포함 여부를 선택하려면 위의 구문을 사용







filecreatedir,backup ;백업 폴더를 변경할 수 있도록 하려면 위 구문을 사용
newfolder=backup





;파일 갯수와 용량 겟
size=0
loop, %drive%*.*, 0, 0     ;기본폴더  
{
 count++
 size:=size+A_loopfilesizeKB
}
if include=1
{
 loop, %drive%*.*, 2, 1 ;폴더검색
 {
  stringtrimleft, taskfolder, A_loopfilefullpath, %len%
  loop, %drive%%taskfolder%*.*, 0, 0
  {
   count++
   size:=size+A_loopfilesizeKB
  }
 }
}
total=%count%   ;전체 파일 수
;파일 갯수를 토대로 퍼센트로 구현합니다.
;용량으로 정확한 퍼센트를 구하려고 했는데 안되네요^^
;용량부분은 삭제하지 않고 남겨두었으니..보완에 도전해 보실 분?ㅎ





loop, %drive%*.*, 0, 0      ;기본 폴더 복사
{
 settimer,timer,1000    ;얘는..traytip으로 얼만큼 복사되었는지 보여주라고 만들었습니다^^
 filecopy, %A_loopfilefullpath%, %newfolder%\%A_loopfilename%, 0
 size:=size-A_loopfilesizeKB
 count--
}


/*
이부분 막막했는데 의외로 쉽게 풀렸는데요...최대한 쉽게 설명해볼께요^^
한 줄 요약으로
폴더를 검색해서 풀패스에서 작업할 폴더명만 빼온 뒤에,
그 폴더를 백업 폴더에 만들고 파일을 옮깁니다.
이 작업을 루프문으로 반복하죠^^
*/


if include=1       ;하위폴더를 백업하기로 선택한 경우
{
 loop, %drive%*.*, 2, 1 ;폴더검색
 {
  stringtrimleft, taskfolder, A_loopfilefullpath, %len%   ;작업할 폴더명만 남습니다.
  filecreatedir, %A_workingdir%\%newfolder%\%taskfolder% ;백업 폴더에 같은 폴더 생성

  loop, %drive%%taskfolder%*.*, 0, 0  ;원본 데이터들을
  {
   filecopy, %A_loopfilefullpath%, %newfolder%\%taskfolder%, 0     ;백업해라..는 얘깁니다..
   count--
   per:=(1-count/total)*100
  }
 }
}
sleep,1000
settimer,timer,off
msgbox, 백업 완료!






timer:

if (temp=0)
traytip, %per%`%, 파일 백업 중...
else if (temp=1)
traytip, %per%`%, 파일 백업 중.
else if (temp=2)
traytip, %per%`%, 파일 백업 중..

temp++
if temp>2
temp=0
return