![別のフォルダー内の各フォルダーに対して .zip ファイルを作成するにはどうすればよいですか?](https://rvso.com/image/1284792/%E5%88%A5%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E5%86%85%E3%81%AE%E5%90%84%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%20.zip%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
フォルダの下には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
と、コマンドが実行されずに印刷されるのがわかります。