OS

[Windows] .bat 파일을 이용하여 파일 자동으로 삭제하기 (feat. forfiles)

RYEAN 2020. 10. 28. 14:23
반응형


일을 하다보면 디스크에 로그가 계속해서 쌓인다.

로그가 계속 쌓여서 디스크가 풀로 찰 수도 있기 때문에 주기적으로 삭제를 해줘야한다.

 

이를 직접 수동으로 할 수도 있지만...

이에 따른 노동력이 필요하기에 파일을 자동으로 삭제할 수 있도록 하려고 한다.

 

.bat 파일작업 스케줄러를 이용하여 파일을 자동으로 삭제하려고 한다.

 

 

1. .bat 파일 생성 (forfiles 명령어 이용)


 

먼저, bat 파일을 만들어야 하는데 forfiles 명령어를 이용하여 만들어 볼 것 이다.

 

forfiles 명령어가 무엇이냐?

forfiles 는 Windows 에서 사용하는 명령어이며, 파일에 대해 명령을 선택하고 실행하는 작업을 한다.

 

forfiles [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] [date | days]

 

위와 같은 구문을 이용해 사용할 수 있으며, 각각의 매개변수의 뜻은 아래와 같다.

 

매개변수 설명
/P pathname 검색을 시작 하는 경로
/M searchmask 검색 할 파일 대상 확장명 (*.*, .txt, .log, .trc 등)
/S 하위 디렉터리를 재귀적으로 검색 할 경우, 하위 폴더명
/D  지정할 날짜 또는 기간.
 - 날짜는 MM/DD/YYYY 형식
 - 기간 값은 0 – 32768 범위까지 가능
/C 실행하고 싶은 명령문.
기본 명령은 "cmd /c echo @file"
명령 문자열에서 다음 변수를 사용할 수 있다.

 @FILE 파일 이름
 @FNAME 확장명 없는 파일 이름
 @EXT 파일 이름 확장명
 @PATH 파일의 전체 경로
 @RELPATH 파일의 상대경로
 @ISDIR 파일 형식이 디렉터리면 TRUE. 그렇지 않으면 FALSE
 @FSIZE 파일 크기(바이트)
 @FDATE 파일에 마지막으로 수정한 날짜 스탬프
 @FTIME 파일의 마지막 수정된 타임 스탬프

 

[참고문헌] docs.microsoft.com/ko-kr/windows-server/administration/windows-commands/forfiles

 

forfiles

파일이 나 파일 집합에 대 한 명령을 선택 하 고 실행 하는 하위 폴더 명령에 대 한 참조 문서입니다.

docs.microsoft.com

 

 

forfiles 명령어에 대해 대충 알았다면 이제 직접 해보자.

 

1) 메모장(Notepad) 를 열고, 아래와 같이 입력한다.

 

의미를 해석해보자면,

/P (대상 파일의 경로) F:\DelTest

/S (하위 폴더) 하위폴더도 포함되게 지정

/M (대상 파일의 확장명) *.trc 로 된 모든 파일 (전체 파일을 대상으로 지정하고 싶다면 *.* 로 하면 됨)

/D (명령 날짜 또는 기간) -30 (30일 이전)

/C (실행하고자 하는 명령문) "cmd /c del @file" (대상 파일들을 모두 삭제한다.)

 

 

2) 위와 같이 원하는 명령문으로 작성 후, 확장자를 .bat 으로 변경하여 저장한다.

 

정상적으로 저장하면 아래와 같이 배치파일(.bat) 로 저장된 것을 확인할 수 있다.

이 파일을 실행시켜주면 해당하는 파일들이 자동 삭제된다.

 

 

 

2. 작업 스케줄러 등록


1) [시작] 메뉴 선택 후, 작업 스케줄러(Task Scheduler) 를 검색 후 실행한다.

 

2) 아래와 같은 화면이 뜰건데, 우측 작업(Actions) 탭의 '작업 만들기(Create Task...)' 를 선택한다.

 

3) 먼저 이름(Name) 을 설정해 준 후, 트리거(Triggers) 탭을 선택하여 작업시간을 설정해주자.

 

4) '새로 만들기(New)...' 버튼 선택한다.

 

5) 원하는 일정으로 변경해준다. (나 같은 경우에는 매일 오전 10시에 돌아가도록 설정하였다.)

 

6) 확인버튼을 누르면 아래와 같이 표시되는 걸 볼 수 있다. 그리고 동작(Actions) 탭을 선택하여 실행 할 동작을 선택해주자.

 

7) '새로 만들기(New)...' 버튼을 선택하여 트리거 발생 시 실행 할 프로그램을 선택해준다. 

     이때, 아까 만들었던 배치파일(.bat) 을 넣어주면 된다.

 

8) '찾아보기(Browse)...' 버튼을 선택해서 처음에 생성한 배치파일(DelTest.bat) 을 가져와주자.

 

9) 해당 파일을 정상적으로 선택이 된 것을 확인하고, 확인버튼을 누르자.

 

10) 아래와 같이 설정된 동작(Action) 을 확인할 수 있다. 그리고 조건(Conditions) 탭을 눌러 실행 조건(환경)을 선택해주자.

 

11) 자신이 원하는 조건을 설정해준다. (빨간색으로 네모 친 걸 주의깊게 보면 될 듯 하다.)

  - 전원(Power) : 컴퓨터의 AC 전원이 켜져 있는 경우에만 작업 시작(Start the task only if the computer is on AC power) 부분은 체크 해제한다. 체크를 하면, 컴퓨터 종료 시 해당 스케줄러는 돌아가지 않기 때문이다.

 - 네트워크(Network) : 다음 네트워크 연결을 사용할 수 있는 경우에만 시작 (Start only if the following network connection is available.) 의 경우, 네트워크 연결이 필요한 작업의 경우 반드시 체크 한다. 하지만 나는 필요 없기에 체크해제했다.

 

12) 위에서 설정 후 확인버튼을 누르고, 아래 화면과 같이 작업 스케줄러 라이브러리(Task Scheduler Libaray) 에 가면

       등록된 스케줄러 내용이 보이는 것을 확인할 수 있다.

이렇게 되면 정상 등록이 된거고,

내가 설정한 시간에 파일이 자동 삭제된다

 

 

끝!

 

반응형

'OS' 카테고리의 다른 글

[Linux] vi 특정 단어 라인 삭제  (2) 2020.11.06
[Windows] 파일 내용 하나로 합치기 (TYPE 명령어)  (2) 2020.08.14