드라이브에서 많은 zip을 다시 압축하는 방법은 무엇입니까?

드라이브에서 많은 zip을 다시 압축하는 방법은 무엇입니까?

다양한 항목의 백업을 담은 ZIP 파일이 많이 포함된 하드 드라이브가 있습니다. 그것들은 서로 다른 시점에 서로 다르고 일관되지 않은 방식으로 압축되었으며, 대부분은 최소 압축 설정을 사용했습니다.

동일한(최상의) 압축 설정을 사용하여 드라이브의 모든 ZIP을 다시 압축할 수 있는 방법(바람직하게는 7zip)이 있습니까?

답변1

다음은 과거에 순수한 일괄 처리로 100% 성공한 유사한 작업에 사용한 스크립트입니다.7Zip드라이브 문자나 폴더가 될 수 있는 소스 디렉터리를 명시적으로 지정할 수 있습니다.

또한 이를 통해 초기 루트 임시 디렉토리를 명시적으로 지정한 다음 zip 파일 이름에서 zip 확장자를 뺀 이름과 일치하는 새 폴더를 생성한 다음 해당 폴더를 제거할 수 있습니다.7Zip각 zip 파일에 대해 아카이브 작업이 완료되었습니다./F의 경우루프가 반복되고 처리됩니다.

스크립트

스크립트 상단에서 Src=, ExtractDir=및 변수 의 값을 환경에 필요한 값으로 설정하기만 하면 나머지는 정상적으로 작동합니다.z7=

무엇이든 지정할 수 있습니다.7Zip 압축 방법필요에 따라 스위치 %z7% a ~직후 명령 끝에 필요합니다 .-aoa-aoa -m<method_parameters>

배치 스크립트로 실행하려면 로직을텍스트 문서데스크톱 등의 <something>.cmd텍스트 문서에서 와 같이파일 | 구하다옵션. 저장한 후에는 두 번 클릭하여 논리를 실행하고(또는 관리자 권한으로 마우스 오른쪽 버튼을 클릭하여 실행) 나중에 파일이 예상대로 조작되었는지 확인하세요.

@ECHO ON
SET Src=X:\
SET ExtractDir=%Src%\tmpExtract007
SET z7="C:\Program Files\7-Zip\7z.exe"

FOR /F "usebackq tokens=*" %%a IN (`DIR /S /B /A-D "%Src%\*.zip"`) DO (
    IF NOT EXIST "%ExtractDir%\%%~Na" MD "%ExtractDir%\%%~Na"
    ECHO A | %z7% e "%%~Fa" -o"%ExtractDir%\%%~Na" -r
    %z7% a "%%~Fa" "%ExtractDir%\%%~Na\*" -aoa
    RD /Q /S "%ExtractDir%\%%~Na"
)
PAUSE
EXIT

out 디렉토리에 존재하는 기존 파일을 덮어쓰도록 지시하는 것 등을 기다리지 않고 명령 ECHO A |앞에 를 기록해 두십시오 .%z7% e ~

여기에 이미지 설명을 입력하세요

-aoa또한, 명령 끝에 스위치를 사용하면 %z7% a ~압축 중인 zip 파일 내의 모든 기존 파일을 덮어쓰도록 지시하여 실제로 전체 원본 zip 파일을 미리 삭제하지 않고 그 안에 있는 모든 원본 파일을 대체할 수 있다는 점에 유의하십시오. 이는 매우 간단합니다. 필요한 경우 이 스크립트에 IF EXIST "%%~Fa" DEL /Q /F "%%~Fa".


추가 리소스

답변2

cmd.exe다음은 이 작업을 수행할 수 있는 일반 명령 프롬프트( )에 대한 간단한 스크립트입니다 .

set ZIP7="C:\Program Files\7-Zip\7z.exe"

for %z in (*.zip) do (
    mkdir tmp
    cd tmp
    %ZIP7% x ..\%z
    %ZIP7% a ..\%z.7z -r -mx9 *
    cd ..
    rmdir /s /q tmp
)

먼저 ZIP7변수는 에 대한 경로로 정의됩니다 7z.exe. 그 다음에for현재 디렉토리의 모든 zip 파일을 반복합니다. 각 zip 파일은 tmp디렉터리로 추출된 다음 최대 압축( -mx9옵션)을 사용하여 7-Zip으로 다시 압축됩니다.

이러한 명령을 배치 파일에 넣을 수 있습니다. 이 경우 -loop 변수 %에 double을 사용하십시오 for. 즉, %%z대신 사용하십시오 %z.

답변3

ReZip 프리웨어가 다음 작업을 수행합니다.zipada55-bin-win32.zip. 우선, rezip -comp -int archive.zip명령은 추가 설치 없이 공정한 작업을 수행합니다. 더 나은 압축을 위해서는 zip, 7z, kzip, advzip을 다운로드하고 옵션 없이 ReZip을 실행해야 합니다 -int. 전체 명령줄 옵션 세트는 다음과 같습니다.

Options:  -defl     : repack archive only with the Deflate
                        subformat (most compatible)
          -fast_dec : repack archive only with fast decompressing subformats
          -int      : use internal Zip-Ada algorithms only, no external call
          -touch    : set time stamps to now
          -lower    : set full file names to lower case
          -del_comm : delete comment
          -comp     : compare original and repacked archives (paranoid mode)
          -rs=n     : loop many times over a single compression approach
                        having randomization, and keep optimum when size is
                        stable after n attempts in a row

답변4

하드 드라이브에서 모든 zip 파일을 찾는 PowerShell 스크립트를 작성하고, 발견된 각 zip 아카이브에 대해 모든 파일을 추출하고 원하는 형식으로 다시 압축합니다.

내장된 ZIP 기능을 사용하거나 PowerShell에서 7zip 명령줄 도구를 호출할 수 있습니다.

관련 정보