728x90

백업 파일을 도스 커맨드(DOS Command)로 관리하거나 하는 경우 날짜를 달아야 하는데 도스 커맨드를 이용해서 batch파일로 만들면 편리합니다.

Winzip과 wzcline 이라는 커맨드 지원 파일을 이용한 예입니다.
wzcline은 윈집 정품 구매자는 무료로 사용할 수 있습니다. 윈집 정품이 아니면 wzcline을 이용할 때 아무 키나 누르면 진행이 되지만 이 경우 스케쥴러에 등록할 수 가 없습니다. 그냥 개인적으로 하루에 한번씩 수동으로 실행할 것이라면 등록을 안해도 되겠죠;;

다음은 오늘날짜를 YYYYMMDD형식으로 받아오는 스크립트입니다.
for /F "tokens=1-3 delims=/ " %%a in ('date /t') do SET DT=%%a%%b%%c

일문이나 영문OS같은 경우 날짜 앞에 요일이 나오는 경우가 있습니다.
그 경우는 다음을 이용해주세요.
for /F "tokens=1-4 delims=/ " %%a in ('date /t') do SET DT=%%a%%d%%b%%c
Set DT=%DT:~3,8%

다음은 특정 날자를 구하는 스크립트입니다. 백업까지 예제로 넣었습니다. 오늘날짜는 구하기 쉬운데 특정 날짜를 입력하려면 무지 힘들죠? -ㅅ-;;
배치파일을 실행할 때 뒤에 변수로 날짜(YYYY/MM/DD)를 입력하면 입력한 날짜의 것이 압축됩니다. 날짜를 입력안하면 오늘보다 하루 전날 것만 압축합니다.

if "%1"=="" ( 
    for /F "tokens=1" %%a in ('date /t') do set orgdate=%%a
) else (
    set orgdate=%1
)

:년월일 분리
set yy=%orgdate:~0,4%
set mm=%orgdate:~5,2%
set dd=%orgdate:~8,2%
:월, 일의 숫자화
set /a mm=1%mm%-100
set /a dd=1%dd%-100

set /a dd=dd-1

if %dd% NEQ 0 goto end

:월 처리
set /a mm=mm-1
if %mm% EQU 0 set mm=12&&set /a yy=yy-1

echo set sub=0030101001010 >sub.bat
echo set /a dd=31-%%sub:~%mm%,1%% >>sub.bat
call sub.bat

:윤년처리
:4년주기
  set /a u=yy %% 4
  if not %u%==0 goto end
:100년주기, 400년주기
  set /a u=yy %% 400
  set /a v=yy %% 100
  if %v%==0 if not %u%==0 goto end
:2월인지 체크
  if %mm% EQU 2 set /a dd=dd+1

:end
set mm=0%mm%
set mm=%mm:~-2%

set dd=0%dd%
set dd=%dd:~-2%

set DT=%yy%%mm%%dd%
:작업폴더
set fdn=c:\Logs

:찾을 파일명
set ffn=account
:압축실행
c:\progra~1\winzip\wzzip -p -r %fdn%\backup\%ffn%_%DT%.zip %fdn%\%ffn%\*%DT%*.*
:에러의 경우 다음줄 실행, 아닌경우 Exit로 이동
If Not ErrorLevel 1 Goto Exit
Echo Error of %fname% >> log.txt
:Exit
Del %fdn%\%ffn%\*%DT%*.*


출처 : http://www.littleworld.net/ai/kmod.asp?no=305&isn=&mymsg=

+ Recent posts