2012-08-15 2 views
0

일괄 프로그래밍에 대한 도움 요청. 특정 폴더의 주기적 백업을 수행해야하며 어떻게 달성 할 수 있을지 궁금해하고있었습니다.7zip을 사용하여 특정 디렉토리를 압축하는 배치 파일?

목표 : 디렉터리를 스크롤하고 특정 이름으로 특정 폴더를 압축합니다.

코드 로직 :

//For all directories in folder 
    for /d %%X in (*) do (
    if (%%X != tag_******) 
     "7z.exe" a -ttar "%%X.tar" "%%X\" 
) 

.

for %%X in (*.tar) do 
    "7z.exe" a -tgzip "%%X.tgz" "%%X" 

가능한 경우 폴더 이름을 일괄 적으로 구분할 수 있습니까?

예 : tag_aaa111_v2를 건너, tag_aaa111를 압축 접두사 "tag_"

조건이 디렉토리 tag_로 시작하고 그 이후 정확히 6 문자를 가지고 있다는 것입니다없이 모든 폴더를 건너 뜁니다.

이 문제를 파악하려고 노력했습니다. 도와 주셔서 감사합니다.

편집 : 코드, 설명.

답변

2

당신이 언어에 관심 마 : 기본적으로, 다음처럼 작성할 수 있어야한다? PERL을 사용하려면 다음과 같이 할 수 있습니다.

while(<*>){ 
    if(-d && m/^tag_/){ 
    system("7zip $_"); # Change to whatever compress command you need 
    } else { 
    #other condition for other files and non matching directories 
    } 
} 

여기서 시스템은 매개 변수가있는 시스템 호출을합니다. -d는 파일이 디렉토리인지 여부를 지정하고 m //은 지정된 패턴과 일치하는 정규 표현식입니다

+0

매일 매일 스크립트를 자동화하는 Windows 스케줄러가 자동으로 perl 스크립트를 실행할 수 있습니까? perl에 익숙하지 않은 사람 –

+0

perl을 설치하는 한. 실행할 모든 유형의 스크립트 나 실행 파일을 예약 할 수 있어야합니다. [perl 스크립트 스케줄링] (http://serverfault.com/questions/267013/scheduling-a-perl-script-with-output-redirection)에 대한 설명이 있습니다. – jcern

+0

흥미 롭습니다. perl에 cli 실행 파일이 있으면 다운로드 할 수 있습니까? 나는 아무것도 설치하지 않으려 고 노력하고 있습니다. –

1

Windows 'FORIF 배치 파일 명령을 살펴보십시오. :)

for /D %%f in (*) do (
    set dirname=%%f 
    if "%dirname:~0,4%"=="tag_" (
     7z ... %dirname% ... 
    ) 
) 

검증되지 않은

+0

오 완벽한. 그래서이 코드 블록은 내 코드 블록 하나를 대체 할 것입니다. 나는 "7z ... % dirname % ..."이라는 if 문이 "7z.exe -dat % dirname % .tar % dirname %"라고 가정합니다. 그리고 dirname은 이름에 정확히 10자를 가진 디렉토리를 어떻게 정렬합니까? –

관련 문제