다른 폴더 내의 각 폴더에 대해 .zip 파일을 만들려면 어떻게 해야 합니까?

다른 폴더 내의 각 폴더에 대해 .zip 파일을 만들려면 어떻게 해야 합니까?

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

  • Usa\
  • Italy\
  • Japan\

등..

.zip각 폴더에 대해 를 생성하는 스크립트가 필요 하므로 usa.zip, italy.zip, 가 있습니다 japan.zip.

어떻게 해야 합니까?

답변1

당신이 사용할 수있는윈라르이를 위해.

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

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

확인을 클릭하면 완료됩니다. .rar 대신 .zip 파일을 원하는 경우 아래 탭 ZIP에서 선택하세요 .GeneralArchive format

답변2

백슬래시를 사용하고 있으므로 이것이 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"

답변3

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 파일에서 삭제하세요. 기존 파일을 미리 삭제하면 이 동작을 피할 수 있습니다.

답변4

이것답변~에 의해MvGUbuntu에서 나를 위해 일했습니다.

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

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

i루프 변수의 이름입니다. */은 현재 디렉터리의 모든 하위 디렉터리를 의미하며 해당 이름 뒤에 슬래시가 포함됩니다. cd이것을 실행하기 전에 올바른 위치에 있는지 확인하십시오 . "$i"후행 슬래시를 포함하여 해당 디렉토리의 이름을 지정하면 됩니다. 따옴표는 디렉터리 이름의 공백으로 인해 문제가 발생하지 않도록 해줍니다. ${i%/}비슷 $i하지만 후행 슬래시가 제거되었으므로 이를 사용하여 zip 파일의 이름을 구성할 수 있습니다.

이것이 어떻게 작동하는지 보려면 echo앞에 를 포함하면 zip 명령이 실행되는 대신 인쇄되는 것을 볼 수 있습니다.

관련 정보