일을 하다보면 디스크에 로그가 계속해서 쌓인다.
로그가 계속 쌓여서 디스크가 풀로 찰 수도 있기 때문에 주기적으로 삭제를 해줘야한다.
이를 직접 수동으로 할 수도 있지만...
이에 따른 노동력이 필요하기에 파일을 자동으로 삭제할 수 있도록 하려고 한다.
.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 명령어에 대해 대충 알았다면 이제 직접 해보자.
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 |