7-zip으로 전체 폴더를 만드는 방법


18

800x600 픽셀로 자르는 사진이 많이 있습니다. 그것은 쉽게 이루어졌지만 이제는 가족이 모두 볼 수 있도록 업로드해야합니다.

이것은 사진에서 500MB입니다. 나는 각각 거의 같은 양의 그림이 들어있는 별도의 폴더를 압축하기로 결정했습니다. 이렇게하면 매일 커플을 업로드 할 수 있습니다. 이 작업을 수동으로 수행하는 것은 매우 길고 힘든 작업입니다. 7-zip으로 각 폴더를 개별적으로 처리하는 방법이 있는지 궁금합니다.

나는 그것을하기 위해 배치 파일이 필요하다고 생각하지만, 나는 그것에 좋지 않다. 모든 것을 하나의 폴더에 넣었습니다. 다양한 하위 폴더에는 그림이있는 곳이 있습니다. 필요한 것은 해당 폴더의 내용을 압축하는 것입니다. 폴더와 함께 압축 할 수 있는지 잘 모르겠습니다. PHP에 zip 모듈이 있다는 것을 알고 있습니다.이 모듈을 사용해 본 적이 없으므로 zip의 내용이 항목이 아닌 항목을 포함하는 폴더라는 사실을 처리 할 수 ​​있는지 잘 모르겠습니다.


1
몇 개의 폴더에 대해 이야기하고 있습니까? 7? 147? 배치 파일이 좋지 않은 경우이 문제를 해결할 수있는 좋은 기회 일 수 있습니다. :)
JMD

총 105 개 폴더
KdgDev

답변:


25

작업 디렉토리가 디렉토리 인 명령 프롬프트에서 실행 My Pictures하면이 명령은 각 서브 디렉토리 컨텐츠의 zip 파일을 작성하고 모든 zip 파일은 디렉토리에 남겨 둡니다 My Pictures.

편집 : 이름에 공백이있는 디렉토리를 허용하는 데 필요한 따옴표를 추가했습니다.

for /D %%d in (*.*) do 7z a -tzip "%%d.zip" "%%d"

또한 다음 버전은 zip 파일 내부의 하위 디렉토리에 파일을 넣지 않고 대신 루트에 파일을 넣습니다.

for /D %%d in (*.*) do 7z a -tzip "%%d.zip" ".\%%d\*"

Windows 7 이상에서

for /D %d in (*.*) do 7z a -tzip "%d.zip" "%d"

또는

for /D %d in (*.*) do 7z a -tzip "%d.zip" ".\%d\*"

클래스 경로에 7-zip 폴더를 추가하려고 시도했지만 작동하지 않습니다. 전체 문자열을 사용하여 7z 대신 실행 파일을 찾으면 작동합니다. 그 문자열을 클래스 경로에 추가해도 같은 효과가 있습니까?
KdgDev

classpath자바 클래스와 라이브러리를 찾을 수있는 곳입니다. google.com/search?q=classpathpath 쉘이 실행 파일을 찾는 위치 와 혼동 된 것 같습니다 .
11시

질문 : 스크립트는 작동하지만 폴더 이름에 공백이 있으면 작동하지 않습니다 ...
KdgDev

업데이트 해 주셔서 감사합니다. 두 번째 스크립트를 사용하면 Zip의 내용이 "평평하게"나타납니다.
KdgDev

6
내가 변경했다하더라도 이것은 나를 위해 큰 일 %%d%d나의 승 7 상자에 var에 이름이 너무 오래되고 오류 "%% d를이 시간에 예상치 못한"던지는에 대해 불평한다.
Benjam

7

명령 줄이 작동하지 않고 대신 WinRAR을 다운로드했고 mtone 이 옳았습니다. WinRAR에는 여러 폴더를 별도의 ZIP 파일로 압축하는 옵션이 있습니다.

예를 C:\Files\Fables 01들어 C:\Files\Fables 01.zipC:\Files\Fables 02C:\Files\Fables 02.zip.

WinRAR을 사용하여 압축하려는 폴더가 포함 된 폴더를 연 후 다음 단계를 수행하십시오.

  • 압축 / 삭제하려는 모든 폴더를 선택하십시오.
  • "ADD"또는 Alt+ A또는 명령-> "파일을 아카이브에 추가"를 클릭하십시오
  • RAR 또는 ZIP을 선택하십시오
  • "파일"탭으로 이동
  • 보관함 상자에서 "각 파일을 별도의 보관함에 넣기"를 선택하십시오.

다른 설정을 고쳤 으면 확인 및 붐을 누르십시오. 여러 폴더의 여러 ZIP 파일. 이것은 커맨드 라인 7zip보다 훨씬 쉽습니다.


"각 파일"이라고 표시되지만이 확인란은 폴더에서도 작동합니다.
dhaupin

1
여기에 제안 된 모든 솔루션 중이 솔루션은 2018 년에 나에게 가장 효과적이었습니다. 아카이브를 .zip으로 만들거나 .rar 파일을 대신 만들 것인지 확인하십시오.
Eric Hepperle-CodeSlayer2010

5

eleven81의 답변을 약간만 업데이트하면 다음 코드는 여러 항목을 놓을 수있는 배치 파일을 만듭니다.

@echo off
if [%1]==[] goto :eof
:loop
7z a -tzip "%~1.zip" "%~1"
shift
if not [%1]==[] goto loop

이 배치 파일은 레지스트리를 통해 컨텍스트 메뉴에 추가 할 수 있습니다.

  1. [HKEY_CLASSES_ROOT \ Folder \ shell] 아래에 새 키를 만들고 cmd1이라고합니다.
  2. 문자열 값을 편집하고 'Batch Zip'이라고 부릅니다.
  3. 이 키 아래에 다른 새 키를 만들고 그것을 명령이라고 부릅니다.
  4. 이중 이스케이프 된 슬래시를 사용하여이 값을 경로로 변경하십시오.

예를 들어 내 항목은 "C : \ Users \ Rory \ Dropbox \ _apps \ batch_zip.bat" "% 1"입니다.

이 작업을 수행하면 '배치 우편 번호'에 대한 컨텍스트 메뉴에 선택한 폴더를 별도의 아카이브로 일괄 압축하는 항목이 있습니다.

그러나 상황에 맞는 메뉴를 통해이 작업을 수행하면 불행히도 모든 작업을 동시에 실행하며 많은 압축 및 압축 해제 작업을 수행 한 사람이 알 수 있듯이 압축 폴더는 한 번에 하나씩 연속적으로 훨씬 빠르게 작동합니다.

레지스트리 에서이 문제를 해결하는 방법을 아는 사람이 있으면 알려주십시오.

선택한 폴더를 배치로 드래그하면 차례로 배치됩니다.


1
7z exe가 내 경로에 없었으므로 스크립트를 약간 편집해야했습니다. "C : \ Program Files (x86) \ 7-Zip \ 7z.exe"-tzip "% ~ 1.zip" "% ~ 1"
Ryan

1
드래그 앤 드롭 LOL로 게으른 격려 +1 방금 수정 된 버전 @ http://superuser.com/a/1160047/678687
Enteleform

3

팁 : 이미지가 JPG 인 경우 이미 압축되어 있습니다. 압축 (압축 수준 : 저장)없이 '아카이브'모드에서 7-Zip을 사용하면 프로세스 속도가 엄청나게 빨라집니다.

울트라 압축을 사용하더라도 5 %는 거의 얻지 못할 것입니다.

실제로 첨부 파일을 추가하는 관점에서 생각하고있었습니다.

이메일 첨부 파일로 보내지 않습니다. 그 대신 소위 원 클릭 호스팅 서버 (예 : drop.io, rs, mu, ms 등 선택 사항이 풍부함)에 업로드 한 다음 이메일을 통해 다운로드 링크를 친구 및 가족에게 보냅니다.


2
하지만 우편으로 보내는 것이 더 쉬울 것입니다.
Rook

475 또는 500MB 업로드에는 큰 차이가 없다고 생각합니다. 'Ultra'로 gazillion JPG를 압축하는 데 걸리는 시간은 충분하지 않습니다. :)

실제로 첨부 파일을 추가하는 관점에서 생각하고있었습니다. 10 개 대신 첨부 파일로 하나의 파일을 추가하는 것이 더 쉽습니다. (파일 수가 증가하면 성가 시게됩니다).
Rook

이것이 Molly가 "보관"모드를 제안한 이유입니다. 이미 압축 된 것을 압축하는 데 시간을 낭비하지 않고 모든 것을 하나의 파일로 저장합니다.
Adrien

내가 그녀의 마지막 문장을 언급하고 있다는 것이 사실이지만 그럼에도 불구하고 jpeg 파일의 크기가 약간 줄어도 (그리고 때로는 그렇게 작지는 않지만) 여전히 가치가 있습니다. 압축에 소요되는 시간은 gmail 또는 다른 메일 (첨부 파일 크기가 비교적 큰 Gmail)을 업로드하는 데 걸리는 시간보다 훨씬 적습니다.
Rook

2

내가 찾은 roryok 의 대답은 매우 도움이 될, 그는 제공 batch script에 대한 Windows그 당신을 수 있도록 drag-&-drop빠르고 자동화 된 보관 파일입니다.


이 스크립트를 사용하려면 .bat확장명으로 저장 한 다음 파일 및 / 또는 폴더를 배치 파일 ( 또는 배치 파일 의 바로 가기)로 끌어다 놓을 수 있습니다 .

.zip파일은 소스 파일과 동일한 디렉토리에 작성됩니다.
( @ 스크립트에서 대상을 변경할 수 있지만archivePath )


쉽게 사용자 정의 및 전반적인 기능을 향상시키기 위해 업데이트 한 내용 :

  • 명명 된 변수 추가
  • 구현 for주어진 인수를 반복하는 것을 루프
    ( 함께이 delayedexpansion런타임 변수를 허용하는 )
  • if차별화 할 조건 추가 filesfolders
    • 이를 통해 아카이브 내에 상위 폴더를 묶지 않고 폴더 내용을 아카이브에 직접 추가 할 수 있습니다
      ( EG :   \archive.zip\file.txt   VS   \archive.zip\parent_folder\file.txt )
  • 실패한 인스턴스를 표시하거나 오류가없는 경우 성공 메시지를 표시하기 위해 오류 로그를 추가했습니다.

@Echo OFF
SetLocal EnableDelayedExpansion



Rem //  7-Zip Executable Path
Set sevenZip="C:\Program Files\7-Zip\7z.exe"



Rem // START: NewLine Variable Hack
Set newLine=^


Rem // END: NewLine Variable Hack !! DO NOT DELETE 2 EMPTY LINES ABOVE !!



Rem //  Set ErrorLog Variables
Set errorCount=0
Set separator=--------------------------------------------------------
Set errorLog=!newLine!!newLine!!separator!!newLine!!newLine!
Set errorPrefix=ERROR @:
Set successMessage=All Files Were Successfully Archived



Rem //  Loop Through Each Argument
SetLocal DisableDelayedExpansion
for %%x in (%*) do (

    Rem //  Use Current Argument To set File, Folder, & Archive Paths
    SetLocal DisableDelayedExpansion
    Set filePath="%%~x"
    Set directoryFiles="%%~x\*"
    Set archivePath="%%~x.zip"
    SetLocal EnableDelayedExpansion

    Rem //  Source Is A Folder
    if exist !directoryFiles! (
            Set sourcePath=!directoryFiles!
    )

    Rem //  Source Is A File
    if not exist !directoryFiles! (
            Set sourcePath=!filePath!
    )

    Rem //  Print Separator To Divide 7-Zip Output
    echo !newLine!!newLine!!separator!!newLine!!newLine!

    Rem //  Add Files To Zip Archive
    !sevenZip! A -TZIP !archivePath! !sourcePath!

    Rem //  Log Errors
    if ErrorLevel 1 (
        Set /A errorCount=errorCount+1
        Set errorLog=!errorLog!!newLine!!errorPrefix!!sourcePath!
    )
)



Rem //  Print ErrorLog
if !errorCount!==0 (
    Set errorLog=!errorLog!!newLine!!successMessage!
)
Echo !errorLog!!newLine!!newLine!!newLine!



Rem //  Keep Window Open To View ErrorLog
pause

1

7-zip에는 모든 파일을 자체 폴더 (* /)로 압축 해제 할 수있는 옵션이 있지만 원하는 반대 동작을 수행하기위한 컨텍스트 명령이 없습니다.

즉, 과거 winrar를 사용 하여이 정확한 일을 기억합니다. "폴더 당 고유 아카이브"옵션이나 그 영향이 있습니다.


-1

picasa를 받고 picasa의 웹 앨범에 업로드하십시오. 그런 다음 누구나 쉽게 온라인으로 사진을 가져 와서 볼 수 있으며 원본을 업로드 할 수도 있습니다 (가족이 더 큰 버전을 인쇄 할 수 있도록).


사람들이 zip 파일을 다운로드하고 추출하는 데 만족할 것이라고 생각한다면 슬프게도 실망 할 것입니다 ... 웹 인터페이스는 모든 사람이 훨씬 쉽게 할 수 있습니다 ...
Kurru
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.