디렉토리 이름을 아카이브에 추가하지 않고 디렉토리에서 아카이브 작성


83

다음과 같은 폴더 구조가 있습니다.

  • 뿌리
    • 폴더 1
    • 폴더 2
    • 폴더 3
    • 7za.exe

7-zip 명령 행 도구를 실행하여 모든 folder1파일을이라는 zip 파일 로 압축하고 싶습니다 folder1.zip.

다음을 실행

7za.exe a -tzip folder1.zip folder1\\*.*

예상대로 zip 파일을 생성합니다. 그러나 zip 파일을 열면이라는 folder1폴더가 있고 그 안에 폴더가있는 모든 파일이 있습니다. 폴더 이름을 zip 폴더에 추가하고 싶지 않습니다. 즉, 모든 파일을 "Flat"파일 형식으로 추가하고 싶습니다.

또한 개별 파일 / 폴더마다 명령 행 도구를 반복적으로 실행하고 싶지 않습니다.

이 기능을 제공하는 스위치가 있습니까?


cdfolder1에 넣을 수 있습니까 7za.exe a -tzip ..\folder1.zip *.*?
zpletan

답변:


136

로부터 7 - 우편 도움말 파일 :

(추가) 명령

보관할 파일을 추가합니다.

7z a archive1.zip subdir\

폴더 subdir의 모든 파일과 하위 폴더를 archive1.zip에 추가합니다. 아카이브의 파일 이름에는 subdir \ 접두사가 포함됩니다.

7z a archive2.zip .\subdir\*

subdir 폴더의 모든 파일과 하위 폴더를 archive2.zip에 추가합니다. 아카이브의 파일 이름에는 subdir \ 접두사가 포함되지 않습니다.

cd /D c:\dir1\

7z a c:\archive3.zip dir2\dir3\

아카이브 c : \ archive3.zip의 파일 이름에는 dir2 \ dir3 \ 접두사가 포함되지만 c : \ dir1 \ 접두사는 포함되지 않습니다.

따라서 원하는 명령은 다음과 같습니다. 7za.exe a folder1.zip .\folder1\*

또한 7-Zip의 와일드 카드 처리에주의하십시오. *.*"모든 파일"로 취급하지 않습니다 . "파일 이름에 마침표가있는 모든 파일"을 의미합니다. 확장명이없는 파일이 없습니다. 모든 파일을 정말로 원한다면 *대신 사용하십시오.

마지막으로, -tzip아카이브 파일 이름이로 끝나는 경우 매개 변수가 필요하지 않습니다 .zip. 7-Zip은 이러한 경우 원하는 형식을 파악할 수있을 정도로 똑똑합니다. 사용자 지정 확장 (예 : 7za.exe a -tzip foo.xpi <files>Mozilla 애드온) 을 원하는 경우에만 필요합니다 .


2

이것은 나를 위해 일했다

C : \ Parent \ SubFolders .....와 같은 폴더 구조를 고려하고 부모 폴더없이 모든 파일 및 폴더 C : \ Parent를 포함하는 parent.zip을 작성하려고합니다 (즉, SubFolders에서 시작됩니다 .....]

cd /D "C:\Parent"

"7z.exe" a Parent.zip "*.*" -r

C : \ Parent에 Parent.zip이 생성됩니다.


2
이것은 다른 답변을 복제하고 새로운 내용을 추가하지 않습니다. 실제로 새로운 내용이 없다면 답변을 올리지 마십시오.
DavidPostill

솔루션을 검색하는 동안이 솔루션을 정확하게 얻지 못했습니다. 분명히 나는 ​​온라인에서 찾은 답변을 복사하여 붙여 넣지 않을 것입니다. 나는 그것에 시간을 보내며 그것을 공유해야한다고 느꼈다. 나 에게이 정확한 답변을 여기에서 찾을 수 있습니다.
Pritesh Dhokchaule 2016 년

7-Zip *.*은 "모든 파일"을 의미하는 것이 아니라 "파일 이름의 일부로 마침표가있는 모든 파일"을 의미합니다. 따라서이 답변은 실제로 확장자가없는 파일을 생략합니다 (허용 된 답변에 명시되어 있음).
Bill_Stewart

1

수락 된 답변을 확장하기 만하면됩니다 (댓글을 추가 할 수 없었습니다).

Linux에서 '*'를 추가해도 효과가 없었으므로 원하는 결과를 얻을 수있는 더 자세한 명령 줄을 작성했습니다.

curr_dir=$(pwd); \ 
cd source_code/lambda/ ; \
7z a ../../lambda.zip .; \
cd $curr_dir \
unset curr_dir

===========

스크립트 설명 :

  • 나중에 사용하기 위해 현재 디렉토리 경로를 저장하십시오.
  • 아카이브해야하는 디렉토리로 이동하십시오.
  • 아카이브 생성 (끝에 '.'(점)을 통지);
  • 원래 디렉토리로 돌아갑니다.
  • 원래 dir 경로를 저장 한 변수를 제거하십시오

누군가에게 도움이되기를 바랍니다.


*따옴표 로 묶는 것이 좋습니다 (그렇지 않으면 셸 이이 위치의 파일로 확장합니다).
Simon Sobisch

-1

이것은 어떤가요. 예 : 폴더 / 하위 폴더 1, 폴더 / 하위 폴더 2

모든 하위 폴더를 선택하고 마우스 오른쪽 버튼을 클릭 한 다음 아카이브를 생성하고 형식을 선택하십시오

* 아카이브 이름은 상위 폴더입니다.

간단 하죠?


3
문제는 GUI 사용 방법이 아니라 7-zip 용 CLI에 관한 것입니다. 자동화를 원할 때 GUI 사용법을 배우는 것은 무의미합니다.
binki
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.