2018년 1월 9일 화요일

오늘 시각으로 파일 압축하여 네트워크 경로에 복사하는 배치파일 예제

말이 좋아서 예제지 내가 필요해서 하나 만든 것..
블로그에 올릴 수 있을 정도로만 대충 정리했으므로 가져가서 사용하실 분은 적당히 고쳐서 사용하시길..

# 동작 내용
FROMFOLDER 에서 파일을 TEMPFOLDER 로 복사하고, 이걸 TARGETFOLDER 로 오늘 날짜_시간.zip 파일 압축을 해서 복사해주는 배치파일

# 사용 방법
스크립트 안의 아래의 경로와 ID / PW 를 변경해서 실행하면 된다.

set TEMPFOLDER=C:\TEMP\

set FROMFOLDER=C:\CONTENTS
set TARGETFOLDER=C:\OUTPUT

set NETFOLDER=\\192.168.0.1\
set NETACCOUNT=아이디
set NETPASSWORD=비밀번호


:: 특정 폴더를 압축해서 시각 파일 이름으로 저장하기

@echo off
setlocal

:: 날짜 문자열을 년월일로 분해
set WEEK=%date:~0,1%
set YEAR=%date:~0,4%
set MONTH=%date:~5,2%
set DAY=%date:~8,2%

:: 시간 문자열을 시분초로 분리
set HOUR=%time:~0,2%
set MINUTE=%time:~3,2%
set SECOND=%time:~6,2%

echo. 현재 빌드 시간 확인, 이 시간을 파일명 뒤에 붙입니다. YYYYMMDD_HHMMSS 의 포맷으로 붙인다. 1자리수의 HOUR 는 0이 아니라 공백으로 오기 때문에 띄어쓰기가 없도록 0으로 매꿔준다.
set TIMETEMP=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%%SECOND%
set TIMERESULT=%TIMETEMP: =0%
echo. %TIMERESULT%

:: 머징용 임시 폴더 제작
echo. 작업을 준비하는 중

:: 임시 작업 폴더 설정
set TEMPFOLDER=C:\TEMP\

if exist %TEMPFOLDER% (
        echo 임시 파일 폴더가 이미 작성되어 있습니다.
) else (
        echo 임시 파일 폴더를 생성합니다..
  MKDIR %TEMPFOLDER%
)

:: 파일 폴더에 복사해서 정리하기
set FROMFOLDER=C:\CONTENTS
set TARGETFOLDER=C:\OUTPUT

echo. 폴더 확인 중

if exist %FROMFOLDER% (
        echo 원본 폴더가 있습니다.
  
  if exist %TARGETFOLDER% (
  echo 대상폴더가 이미 있습니다.
  ) else (
   echo 대상폴더가 없어서 새로 만듭니다.
   MKDIR %TARGETFOLDER%
  )
) else (
        echo 원본 폴더가 없습니다. 작업을 중지합니다.
  goto ERROREND
)

pause

echo. 임시 경로로 파일 복사하는 중
Xcopy %FROMFOLDER% %TEMPFOLDER%

:: 출력될 파일 이름 설정 및 압축

echo. 임시 폴더로 부터 파일을 압축하는 중...

set OUTPUTFILENAME=%TIMERESULT%.zip
:: 반디집
"%programfiles%\Bandizip\Bandizip.exe" c -y %TARGETFOLDER%%OUTPUTFILENAME% %TEMPFOLDER%
:: 7집
::"%programfiles%\7-zip\7z.exe" a -y %TARGETFOLDER%%OUTPUTFILENAME% %TEMPFOLDER%

:: 네트워크 폴더에 복사
echo. 네트워크 폴더에 복사하는 중...
set NETFOLDER=\\192.168.0.1\
set NETACCOUNT=아이디
set NETPASSWORD=비밀번호

net use %NETFOLDER% NETPASSWORD /user:NETACCOUNT /persistent:no
copy %TARGETFOLDER%%OUTPUTFILENAME% %NETFOLDER%
if exist %NETFOLDER%%OUTPUTFILENAME% echo %OUTPUTFILENAME% 파일이 잘 복사된 것 같습니다.

echo. 네트워크 폴더 사용 목록을 제거 시도...
net use %NETFOLDER% /delete

:: 임시 폴더 삭제
echo. 임시 파일 삭제 중...
rmdir /s /q %TEMPFOLDER%

echo. 작업 완료! 오케이~
goto QUIT

:ERROREND
echo. 오류가 발생해서 작업을 종료합니다.
goto QUIT

:QUIT

endlocal
귀찮은 일은 컴퓨터에게 맡깁시다.

댓글 없음:

댓글 쓰기