如何使用 7zip 命令列更新多個壓縮檔?

如何使用 7zip 命令列更新多個壓縮檔?

我需要將檔案“background.png”更新為同一目錄中的數百個 .zip 檔案。我嘗試了以下命令但沒有成功:

7z u -r "C:\Users\xxx\Desktop\testzip\*.zip" "C:\Users\xxx\Desktop\testzip\background.png"

我收到錯誤“無法開啟文件”。有可能做到嗎?

答案1

使用 7-Zip 遞歸地將一個特定檔案新增至每個 zip 文件

用一個對於/F循環和 目錄命令使用/S /B /A-D開關從起始目錄向下遞歸地逐個迭代每個 zip 文件,並以這種方式更新每個存檔文件。

筆記: 使用此方法,您將省略並且不使用7-拉鍊 -r使用更新參數進行切換。


命令列

FOR /F "TOKENS=*" %A in ('DIR /S /B /A-D "C:\Users\xxx\Desktop\testzip\*.zip"') DO 7z u "%~fA" "C:\Users\xxx\Desktop\testzip\background.png"

批次腳本

筆記: 您可以將該變數的值設定SET Src=為您希望遞歸更新 zip 檔案的完整路徑起始資料夾的值。您可以將SET uFile=變數值設定為用於更新 zip 檔案的檔案的完整路徑;更新文件。

@ECHO ON

SET Src=C:\Users\xxx\Desktop\testzip
SET uFile=C:\Users\xxx\Desktop\testzip\background.png

FOR /F "TOKENS=*" %%A in ('DIR /S /B /A-D "%Src%\*.zip"') DO (
    7z u "%%~fA" "%uFile%"
)

更多資源

  • 對於/F
  • FOR /?

        tokens=x,y,m-n  - specifies which tokens from each line are to
                          be passed to the for body for each iteration.
                          This will cause additional variable names to
                          be allocated.  The m-n form is a range,
                          specifying the mth through the nth tokens.  If
                          the last character in the tokens= string is an
                          asterisk, then an additional variable is
                          allocated and receives the remaining text on
                          the line after the last token parsed.
    

    此外,FOR 變數引用的替換也得到了增強。現在您可以使用以下可選語法:

    %~fI        - expands %I to a fully qualified path name
    
  • 目錄

  • -u(更新選項)開關

相關內容