다른 폴더 내의 각 폴더에 대해 .zip 파일을 어떻게 만들 수 있습니까?


18

폴더 아래에 images\다음 폴더가 있습니다.

  • Usa\
  • Italy\
  • Japan\

기타..

내가 만드는 스크립트 싶어 .zip내가 가지고 있으므로, 이러한 폴더의 각을 usa.zip, italy.zip, japan.zip.

어떻게해야합니까?

답변:


10

백 슬래시를 사용하고 있기 때문에 이것이 Windows라고 가정합니다.

가져 7za.exe (의 명령 줄 버전 7-ZIP을 )와에 넣어 %PATH%.

그런 다음 Images\디렉토리 에서 이것을 실행하십시오 .

for /f "tokens=* usebackq" %G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%~G.zip" "%~G"

또는 배치 스크립트에서 :

for /f "tokens=* usebackq" %%G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%%~G.zip" "%%~G"

폴더 이름에 공백이 있으면 작동하지 않습니다.
jiggunjer

@jiggunjer 그렇습니다. 폴더 이름의 공백으로 작동하도록 수정했습니다.
paradroid

1
이것은 일반적인 7zip 실행 파일에서도 작동합니다. 7za를 "C : \ Program Files \ 7-Zip \ 7z.exe"로 업데이트했으며 문제없이 작동했습니다.
user1324161

8

Linux를 사용한다고 가정하면 다음과 같이 Bash 스크립트를 사용할 수 있습니다.

  #!/bin/bash

  IFS=$'\n'

  for f in $(find "$1" -mindepth 1 -maxdepth 1 -type d ); do
    zip -r "$f" "$f"
  done

이 스크립트는 첫 번째 인수를 폴더 (이 경우 이미지)로 가져와 정확히 한 수준의 깊이를 되찾아 모든 폴더 (미국, 이탈리아 및 일본)를 가져와 같은 위치에 압축합니다.

오래된 zip 파일이나 소스 폴더는 삭제하지 않습니다. Zip은 기존 zip 파일을 감지하고 다시 실행할 때 업데이트 할 수있을 정도로 똑똑합니다. 그러나 소스 폴더에서 파일을 삭제하면 zip 파일에서는 삭제 되지 않습니다 . 기존 파일을 미리 삭제하여이 동작을 피할 수 있습니다.


sponiro가 게시 한 Linux 스크립트를 사용하여 처음에 폴더를 삭제하기위한 행을 추가했습니다. find $ 1 -type d | xargs rm -rf
genevish

7

Winrar 를 사용할 수 있습니다 .

모든 폴더를 선택하고 마우스 오른쪽 단추를 클릭 한 다음을 선택하십시오 Add to archive. 이제 Put each file to separate archive탭 아래 에서 옵션을 선택 하십시오 Files.

여기에 이미지 설명을 입력하십시오

확인을 클릭하면 완료됩니다. .rar 대신 .zip 파일을 원하면 아래 ZIPGeneral탭 에서을 선택하십시오 Archive format.


0

대답 하여 MVG는 우분투에 나를 위해 일한 :

이 루프는 bash다음 에서 사용할 수 있습니다 .

for i in */; do zip -r "${i%/}.zip" "$i"; done

i루프 변수의 이름입니다. */는 현재 디렉토리의 모든 하위 디렉토리를 의미하며 해당 이름에 슬래시를 포함합니다. cd이를 실행하기 전에 올바른 위치에 있는지 확인하십시오 . "$i"뒤에 슬래시를 포함하여 해당 디렉토리의 이름을 지정하십시오. 인용 부호는 디렉토리 이름의 공백이 문제를 일으키지 않도록합니다. 후행 슬래시가 제거 된 ${i%/}것과 같으 $i므로이를 사용하여 zip 파일의 이름을 구성 할 수 있습니다.

이것이 작동하는 방식을 보려면 echo앞에를 포함 zip 하면 명령 대신 실행 된 명령이 표시됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.