
フォルダの下にはimages\
、次のフォルダがあります。
Usa\
Italy\
Japan\
等..
.zip
これらのフォルダーごとに を作成するスクリプトが必要なので、 usa.zip
、italy.zip
、を使用しますjapan.zip
。
どうやってやるの?
答え1
使用できますウィンラーこのために。
すべてのフォルダを選択し、右クリックして選択します。次に、タブの下のAdd to archive
オプションを選択します。Put each file to separate archive
Files
[OK] をクリックすると完了です。.rar ではなく .zip ファイルが必要な場合は、の下のタブZIP
で選択します。General
Archive 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
と、コマンドが実行されずに印刷されるのがわかります。