我需要將檔案“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(更新選項)開關