집 청소도 청소기를 직접 돌리면야

구석구석 깔끔하게, 버릴 것 안 버릴 것 선택하며

입맛에 맞게 할 수 있겠다.


그럼에도 청소 할 시간이 안 난다면

로봇청소기에게 대략의 청소를 맞기게 되는 것이다.


우리집 공용 컴퓨터의 지저분한 다운로드 폴더라거나

매일 라디오를 자동 녹음하게 한 폴더를 제 때 정리하지 않으면

금새 너저분해지고 사용량이 커지게 된다.

이런 폴더에서 오래된 파일을 자동삭제하도록 설정하고자 한다.

이렇게 하면 버려지기 전에 각 사용자가 자기만의 폴더로 복사하게 되겠지.


개념은 윈도우에 내장된 "작업 스케줄러" 기능에

명령줄에서 한번에 실행할 수 있는 내부명령어를 예약하여

주기적으로 동작하게 만드는 것이다.


작업 스케줄러 사용법은 알아서 검색. GUI라서 걱정 없다.


1. 폴더 안에 파일만 있는 경우

라디오 예약녹음이라든지, 폴더를 만들지 않고 파일만 있는 곳에서 사용한다.

forfiles 라는 외부명령어(윈도우 기본제공)를 사용, 조건에 맞는 파일 삭제.


예시 > forfiles /P "D:\정리할\폴더" /D -10 /C "cmd /c del @path"


/P : 특정 path에서

/D : 날짜(date)가 경과된 파일을 골라

/C : 특정 명령어를 실행

저기서 -10 인수가 10일 경과한 파일들이 선택삭제하도록 지정하는 것이다.

숫자를 알맞게 바꾸면 되겠다.


2. 하위폴더가 있는 경우

다운로드 폴더 등에는 하위폴더를 만들어서 저장해둔 경우도 더러 있다.

robocopy 라는 외부명령어(윈도우 기본제공)를 사용, 오래된 파일을 모두 찾아

다른 곳으로 이동한 후 그 곳에서 삭제한다.


예시(3단계) >

cmd /c "mkdir D:\temp\TrashMe"

robocopy D:\temp D:\temp\TrashMe /move /e /minage:5 /create /r:1 /w:1 /xd "D:\temp\또 다른 제외폴더" D:\temp\TrashMe

cmd /c "rmdir /s /q D:\temp\TrashMe"


위에서도 사용되었지만, del, md, rd 등 내부명령어들은 cmd /c 와 함께 사용해햐 한다.

D:\temp 에서

D:\temp\TrashMe 으로

이동 /move 하는데,

하위폴더를 포함 /e 하여,

5일보다 오래된 파일만 선택해서 /minage:5

껍데기만 만든다 /create (이 부분은 실행속도 향상을 위한 것임)

이 때 뭔가 이상하면 재시도 1번 /r:1

기다리는 시간은 1초 /w:1 으로 한다.

당연하지만 컴퓨터는 당황할테니, 대상폴더는 제외(뭐 또 포함시킬것도)

/xd D:\temp\TrashMe "D:\temp\또 다른 제외폴더"



정리 잘하고 살자.



Posted by skyey
,