回答:
バックスラッシュを使用しているため、これは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"
Linuxを使用している場合、次のようなBashスクリプトを使用できます。
#!/bin/bash
IFS=$'\n'
for f in $(find "$1" -mindepth 1 -maxdepth 1 -type d ); do
zip -r "$f" "$f"
done
このスクリプトは、最初の引数をフォルダー(この場合は画像)として受け取り、すべてのフォルダー(Usa、イタリア、および日本)を取得して同じ場所にzip圧縮するために1レベルだけ正確に再帰します。
古いzipファイルやソースフォルダーは削除されません。Zipは、既存のzipファイルを検出し、再実行時にそれらを更新するのに十分スマートです。ただし、ソースフォルダーのファイルを削除しても、zipファイルでは削除されません。事前に既存のファイルを削除することにより、この動作を回避できます。
このループは
bash
次の場所で使用できます。for i in */; do zip -r "${i%/}.zip" "$i"; done
i
ループ変数の名前です。*/
は、現在のディレクトリのすべてのサブディレクトリを意味し、これらの名前の末尾にスラッシュが含まれます。cd
これを実行する前に、適切な場所にいることを確認してください。"$i"
末尾のスラッシュを含めて、単にそのディレクトリに名前を付けます。引用符は、ディレクトリ名の空白が問題を引き起こさないようにします。${i%/}
のようなものです$i
いますが、末尾のスラッシュが削除されているため、これを使用してzipファイルの名前を作成できます。これがどのように機能するかを確認したい場合は、
echo
前zip
と、コマンドが実行される代わりに印刷されます。