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 을 맨앞에 적으면 된다.