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 ファイルを 1 つずつ再帰的に反復処理し、各アーカイブ ファイルをこのように更新します。

注記: この方法では、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 (更新オプション) スイッチ

関連情報