如何為另一個資料夾中的每個資料夾建立 .zip 檔案?

如何為另一個資料夾中的每個資料夾建立 .zip 檔案?

在資料夾下images\,我有以下資料夾:

  • Usa\
  • Italy\
  • Japan\

ETC..

.zip我想要一個為每個資料夾建立 的腳本,所以我有usa.zip, italy.zip, japan.zip.

我怎樣才能做到這一點?

答案1

您可以使用解壓縮工具為了這。

選擇所有資料夾,右鍵單擊並選擇Add to archive。現在選擇Put each file to separate archive選項卡下的選項Files

在此輸入影像描述

按一下“確定”即可完成。如果您想要 .zip 檔案而不是 .rar,只需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

該腳本將第一個參數作為資料夾,在本例中為映像,並精確遞歸一層以獲取所有資料夾(美國、義大利和日本)並將它們壓縮到同一位置。

它不會刪除舊的 zip 檔案或來源資料夾。 Zip 足夠智能,可以檢測現有的 zip 檔案並在再次運行時更新它們。但是,如果您刪除來源資料夾中的文件它不會zip 檔案中刪除。您可以事先刪除現有文件來避免此行為。

答案4

回答經過平均電壓在 Ubuntu 上為我工作:

您可以在以下位置使用此循環bash

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

i是循環變數的名稱。*/表示目前目錄的每個子目錄,並且在這些名稱中包含尾部斜線。在執行此操作之前,請確保您cd位於正確的位置。 "$i"只需命名目錄,包括尾部斜線。引號確保目錄名稱中的空格不會造成麻煩。${i%/}類似於$i但刪除了尾部斜杠,因此您可以使用它來構造 zip 檔案的名稱。

如果您想了解其工作原理,請在echo之前添加zip ,您將看到列印的命令而不是執行的命令。

相關內容