我需要将文件“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(更新选项)开关