如何使用 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-Zip -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(更新选项)开关

相关内容