7z - 하위 디렉터리의 파일을 압축하고 상위 폴더 이름으로 지정

7z - 하위 디렉터리의 파일을 압축하고 상위 폴더 이름으로 지정

다음과 같이 폴더 구조를 압축하려고 합니다.

Root
 |_ Folder
      |_Sub Folder 1
          |_Files
      |_Sub Folder 2
          |_Files
      |_ *more Sub Folders*

하위 폴더 내의 파일이 포함된 각 하위 폴더에 대해 .zip 파일을 생성해야 하며 하위 폴더에 대한 이름을 지정해야 합니다. 따라서 "폴더" 내에서 명령을 실행하면 하위 폴더의 내용만 포함된(단순히 압축된 하위 폴더가 아님) 각 하위 폴더에 대한 이름의 zip 파일을 얻게 됩니다.

Windows에서 7-zip을 사용하여 다양한 명령을 시도했지만 얻을 수 없는 것 같습니다.

for /d %i in (*) do 7z a -oC:\Temp... %i.zip

전체 폴더 내용을 압축하고 각 하위 폴더 이름에 대한 아카이브 생성을 반복합니다.

당신이 제공할 수 있는 도움에 감사드립니다!

답변1

가장 쉬운 방법은 TotalCommander를 설치하고(ghisler 사이트에서) 원하는 하위 디렉터리를 선택하는 것입니다(모두 전환하려면 숫자 키보드에서 *를 사용할 수 있음). 압축기에 대한 Alt-F5 단축키. "선택한 파일/디렉터리별로 별도의 아카이브 생성"을 선택하고 원하는 압축기를 선택한 다음 확인을 클릭합니다.

배치에서는 다음을 사용할 수 있습니다.

@echo off
for /d %%i in (*) do (
    echo Compressing %%i
  7z a "C:\TEMP\%%i.7z" -r "%%i\*.*"
)

또는 CMD 줄에서:

for /d %i in (*) do  7z a "C:\TEMP\%i.7z" -r "%i\*.*"

답변2

Powershell을 사용할 수도 있습니다.

Get-ChildItem -Path "C:\Root\Folder" -Force -Directory -ErrorAction Continue | foreach {Start-Process "C:\Program Files\7-Zip\7z.exe" -ArgumentList "a C:\TEMP\$_.7z -r $($_.FullName)\*.*"}

관련 정보