2009-09-24 6 views
1

저는 실제로이 배치 파일의 새로운 점이 있습니다. 나는 적어도 기본 명령을 아는 것이 중요하다는 것을 알고 있습니다. 다음 작업을 수행하려면 어떻게해야합니까?지정된 폴더를 백업하기위한 배치 파일 만들기

  • 지정한 폴더를 압축합니다.
  • 폴더를 다른 위치로 이동하십시오.
  • ZIP 파일 이름을 압축하면 ZIP 파일 이름은 현재 날짜가되고 같은 이름의 다른 압축 파일이 있으면 20090924-2와 같은 이름이어야합니다.

PS : 7-Zip 아카이브 소프트웨어와 같은 컴퓨터에 설치되어 있습니다.

+1

당신은 시간이 없어 * 코멘트 * 약간 자극적이지만, 내가 답장을 할 시간이 없습니다. – pavium

+0

@pavium : 죄송합니다 선생님 : ( – Tarik

답변

4

아래에 나열된 배치 스크립트를 사용하면됩니다 (테스트 한 결과 이며 사양에 따라 작동 함). 디렉토리를 압축하고 이동을 상위 디렉토리로 지정하고 디렉토리의 이름 ( 시작 부분에 PARENT_FOLDERTOZIP 및 FOLDERTOZIP) - 전체 디렉토리를 복사하는 방법을 알지 못했습니다. (XCOPY는 내용 만 복사 할 수 있다고 생각합니다. 디렉터리 및 하위 디렉터리 ). 복사 위치는 이며 FOLDERTARGETLOCATION으로 지정되고 을 압축 할 파일을 배치 할 디렉토리는 ZIPDIR로 지정됩니다.

7-Zip의 위치는 SEVENZIP_EXE를 통해 구성됩니다.

필수 날짜 형식으로 현재 날짜를 가져 오는 것은 지역 설정의 간단한 날짜 형식에 따라 달라집니다. ISO-8601, 중부 유럽 및 미국에 대해 세 가지 버전을 나열했습니다. 목록에있는 활성 버전은 미국 용입니다 ("set FDATE ="행). 다른 하나가 필요한 경우 다른 두 개 중 하나에서 복사하여 붙여 넣기 만하면됩니다. 이런 종류의 일이 Perl, Python 또는 PowerShell 훨씬 쉽다는 것을 주목해야한다 고 말했다

.


@echo off 
@title=Folder zip and move... 

rem Parameters 
    rem Folder to zip and move 
    set PARENT_FOLDERTOZIP=T:\to delete 
    set FOLDERTOZIP=Folder to Compress 

    rem Target folder for moving the input folder to. 
    set FOLDERTARGETLOCATION=s:\move Here 

    rem Where to place compressed folders 
    set ZIPDIR=D:\toDelete\2009-09-24a 


rem Configuration 
    set SEVENZIP_EXE=D:\Program Files\7-Zip\7z.exe 


rem =================== Date ============================================== 
rem There is no universal way inside batch itself to get a 
rem date that is independent of regional settings (but is 
rem quite trivial if an external program or script 
rem (Perl/Python) is available). 
rem 
rem For short date formats: 
rem 
rem ------------------------------------------------------- 
rem 
rem ISO-8601: 
rem 
rem  yyyy-MM-dd/  E.g.: 2009-09-24 
rem 
rem  set FDATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2% 
rem 
rem ------------------------------------------------------- 
rem 
rem Central european: 
rem 
rem  dd/MM/yyyy  E.g.: 24/09/2009 
rem 
rem  set FDATE=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2% 
rem 
rem ------------------------------------------------------- 
rem 
rem US: 
rem 
rem 
rem  MM/dd/yyyy  E.g.: 09/24/2009 
rem 
rem  set FDATE=%DATE:~6,4%%DATE:~0,2%%DATE:~3,2% 

set FDATE=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2% 
set ZIPFILE=%ZIPDIR%\%FDATE%.7z 

set FOLDERTOZIP_FULLPATH=%PARENT_FOLDERTOZIP%\%FOLDERTOZIP% 
mkdir %FOLDERTARGETLOCATION% 


rem Does a zip file already exist? 
if exist "%ZIPFILE%" GOTO L_ZIPFILE_EXISTS 
GOTO L_ZIPFILENAME_OK 


rem Find a compressed file that does not already exist. 
:L_ZIPFILE_EXISTS 
set RNUM=0 
:L_TRYANOTHER 
set /a RNUM=%RNUM% + 1 
set ZIPFILE=%ZIPDIR%\%FDATE%-%RNUM%.7z 
echo Candidate: %ZIPFILE% ... 
if exist "%ZIPFILE%" GOTO L_TRYANOTHER 


rem Zip the folder! 
:L_ZIPFILENAME_OK 
"%SEVENZIP_EXE%" a %ZIPFILE% "%FOLDERTOZIP_FULLPATH%" 

if exist "%ZIPFILE%" GOTO L_OKZIP 
GOTO L_ERROREND 


:L_OKZIP 
rem Move folder: copy, then delete source. 
set DEST_FOLDER=%FOLDERTARGETLOCATION%\%FOLDERTOZIP% 
mkdir "%DEST_FOLDER%" 
xcopy /Y /S "%FOLDERTOZIP_FULLPATH%"\*.* "%DEST_FOLDER%"\ 
rmdir /S "%FOLDERTOZIP_FULLPATH%" 
GOTO L_END 


:L_ERROREND 
echo 7-Zipping failed !!! 


:L_END 

pause 
+0

대단히 감사합니다. – Tarik

관련 문제