別のフォルダー内の各フォルダーに対して .zip ファイルを作成するにはどうすればよいですか?

別のフォルダー内の各フォルダーに対して .zip ファイルを作成するにはどうすればよいですか?

フォルダの下にはimages\、次のフォルダがあります。

  • Usa\
  • Italy\
  • Japan\

等..

.zipこれらのフォルダーごとに を作成するスクリプトが必要なので、 usa.zipitaly.zip、を使用しますjapan.zip

どうやってやるの?

答え1

使用できますウィンラーこのために。

すべてのフォルダを選択し、右クリックして選択します。次に、タブの下のAdd to archiveオプションを選択します。Put each file to separate archiveFiles

ここに画像の説明を入力してください

[OK] をクリックすると完了です。.rar ではなく .zip ファイルが必要な場合は、の下のタブZIPで選択します。GeneralArchive format

答え2

バックスラッシュを使用しているので、これは Windows であると想定します。

得る7za.exe(コマンドライン版7-ジップ) を入力して、 に入れます%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

このスクリプトは、最初の引数をフォルダー(この場合は画像)として受け取り、正確に 1 レベルの深さまで再帰してすべてのフォルダー(Usa、Italy、Japan)を取得し、同じ場所に圧縮します。

古いzipファイルやソースフォルダは削除されません。Zipは既存のzipファイルを検出し、再度実行したときに更新するほど賢いです。ただし、ソースフォルダ内のファイルを削除した場合ならないzip ファイル内のファイルは削除されません。事前に既存のファイルを削除することで、この動作を回避できる場合があります。

答え4

これ答えによるMVG私の場合、Ubuntu で動作しました:

このループは次の場所で使用できますbash:

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

iはループ変数の名前です。*/は現在のディレクトリのすべてのサブディレクトリを意味し、それらの名前には末尾のスラッシュが含まれます。cdこれを実行する前に、正しい場所であることを確認してください。 は "$i"、末尾のスラッシュを含むディレクトリの名前のみを指定します。引用符により、ディレクトリ名に空白があっても問題が発生しません。は に${i%/}似ています$iが、末尾のスラッシュが削除されているため、これを使用して zip ファイルの名前を作成できます。

これがどのように動作するかを確認したい場合は、echoの前にを含めるzip と、コマンドが実行されずに印刷されるのがわかります。

関連情報