본문 바로가기

Tech/Windows

오래된 로그파일 정리하기

네이버 공유하기
728x90

7z.comp.marasong.bat


윈도에서 로그파일을 압축하거나 삭제해야 하는 경우, 배치 스크립트 예시.

먼저 시스템에 7z 이 설치되어 있어야 하고, 설치경로 (기본값 C:\Program Files\7-Zip) 를 PATH 에 추가한다.

파워쉘이 없는 경우가 있으니 배치로 작성하면 아래와 같다.

윈도 배치는 날짜함수가 없어서 계산해야 한다.


아래에서는 set /a DD=1%DD%-102 이렇게 날짜 계산시 102 를 빼줬는데, 이러면 오늘이 2017-02-28 이니까

2017-02-26 로그를 압축하고 삭제하게 된다. (101 = 1일전, 102 = 2일전, 103 = 3일전, 104 = 4일전...)

echo %workdate% --> 20170226
echo %workdate2% --> 170226
echo %workdate3% --> 2017-02-26


@echo off
setlocal
rem MaraSong's Log file compress and delete script
rem Information sharing is important.

rem compress the yesterday logfile.
rem korean windows = delims=- 한글 윈도인 경우, 아래 for 문에서 델리미터를 - 로 지정해야 함.
rem chinese and english windows = delims=/ 영문, 중문 윈도인 경우, 아래 for 문에서 델리미터를 / 로 지정해야 함.

for /f "tokens=1-3 delims=- " %%A in ('echo %DATE%') do (set YY=%%A&SET MM=%%B&SET DD=%%C)

rem 101=1day ago, 102=2days ago, 103=3days ago...
set /a DD=1%DD%-102
set /a MM=1%MM%-100

rem echo %DD%, %MM%

if  %DD% GTR 0 goto end

set /a MM=%MM%-1

if %MM% GTR 0 goto leap

set /a DD=31
set /a MM=12
set /a YY=%YY%-1

REM echo %YY%, %MM%, %DD% -> 2016, 12, 31 goto end

:leap
set /a TT=%YY%/4
set /a TT=%TT%*4
rem echo %MM%, %DD%, %TT%
if %YY% equ %TT% goto mon%MM%
if %MM% equ 2 goto mon21
goto end

:mon1
:mon3
:mon5
:mon7
:mon8
:mon10
:mon12
set /a DD=31
goto end

:mon2
set /a DD=29
goto end

:mon21
set /a DD=28
goto end

:mon4
:mon6
:mon9
:mon11
set /a DD=30
goto end

:end
set /a DD=%DD% + 100
set DD=%DD:~1,2%
set /a MM=%MM% + 100
set MM=%MM:~1,2%
SET AA=0
SET BB=0
SET CC=0
SET FF=0

if "%*" == "" goto work_yesterday
rem echo %1
set workdate=%1
goto comp_7z

:work_yesterday
rem echo %YY%%MM%%DD%
set workdate=%YY%%MM%%DD%
goto comp_7z

:comp_7z
rem echo %workdate%
set workdate2=%workdate:~2,6%
set workdate3=%workdate:~0,4%-%workdate:~4,2%-%workdate:~6,2%
rem check the work date
echo %workdate%
echo %workdate2%
echo %workdate3%
pause

rem ----- log file ----- 로그 파일을 압축하는 경우
7z a -t7z D:\GameBin\LOG\Logfile.%workdate%.7z D:\GameBin\LOG\*LOG.%workdate2%_*.txt
del D:\GameBin\_LOG\*.%workdate2%_*.txt

rem ----- log dir ----- 로그 디렉토리를 압축하는 경우
7z a -t7z D:\GameBin\LOG\Logdir.%workdate%.7z D:\GameBin\LOG\LOG_%workdate3%
rmdir /Q /S D:\GameBin\LOG\LOG_%workdate3%


이것만 있으면 다양하게 응용이 가능하고, 이제 이 파일을 작업 스케줄러나 예약된 작업에 걸면 된다.

실제 사용할때에는 echo 나 pause 를 지워야 한다. 주석은 rem 을 맨앞에 적으면 된다.


반응형
네이버 공유하기


* 쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있습니다.