さまざまなもののバックアップの ZIP ファイルが多数保存されているハード ドライブがあります。これらのファイルは、さまざまな時点でさまざまな一貫性のない方法で圧縮されており、その多くは最小限の圧縮設定を使用しています。
同じ(最適な)圧縮設定を使用して、ドライブ上のすべての ZIP を再圧縮する方法(できれば 7zip を使用)はありますか?
答え1
以下は、私が過去に同様のタスクで100%成功した、純粋なバッチ処理のスクリプトです。7ジップソース ディレクトリをドライブ文字またはフォルダーで明示的に指定できます。
これにより、初期ルート一時ディレクトリを明示的に指定し、その中にzipファイルの名前からzip拡張子を除いた名前に一致する新しいフォルダを作成し、その後、7ジップアーカイブ操作は各zipファイルごとに完了します。/Fの場合ループは繰り返して処理します。
脚本
スクリプトの先頭で、、変数の値を環境に応じて設定するだけで、残りは正常に機能しSrc=
ます。ExtractDir=
z7=
何でも指定できます7Zipの圧縮方法必要に応じて、コマンドの最後にスイッチの%z7% a ~
直後にを追加する必要があります。-aoa
-aoa -m<method_parameters>
ただし、バッチスクリプトとして実行するには、ロジックをテキスト文書<something>.cmd
テキスト文書からデスクトップなどにファイル | 保存オプション。保存したら、ダブルクリックしてロジックを実行し(または右クリックして管理者として実行)、その後ファイルが期待どおりに操作されたことを確認します。
@ECHO ON
SET Src=X:\
SET ExtractDir=%Src%\tmpExtract007
SET z7="C:\Program Files\7-Zip\7z.exe"
FOR /F "usebackq tokens=*" %%a IN (`DIR /S /B /A-D "%Src%\*.zip"`) DO (
IF NOT EXIST "%ExtractDir%\%%~Na" MD "%ExtractDir%\%%~Na"
ECHO A | %z7% e "%%~Fa" -o"%ExtractDir%\%%~Na" -r
%z7% a "%%~Fa" "%ExtractDir%\%%~Na\*" -aoa
RD /Q /S "%ExtractDir%\%%~Na"
)
PAUSE
EXIT
ECHO A |
コマンドの先頭に を付けて、%z7% e ~
ユーザーが指示するまで待つのではなく、出力ディレクトリに存在する既存のファイルを上書きするように指示することに注意してください。
-aoa
また、コマンドの最後にあるスイッチの使用にも注意してください。%z7% a ~
このスイッチは、圧縮する zip ファイル内のすべての既存ファイルを上書きして、その中のすべてのオリジナル ファイルを置き換えるように指示します。元の zip ファイル全体を事前に削除する必要はありません。必要な場合は、 を 1 行追加するだけで、このスクリプトに簡単に追加できますIF EXIST "%%~Fa" DEL /Q /F "%%~Fa"
。
その他のリソース
答え2
cmd.exe
これを実行できる通常のコマンド プロンプト () 用の簡単なスクリプトを次に示します。
set ZIP7="C:\Program Files\7-Zip\7z.exe"
for %z in (*.zip) do (
mkdir tmp
cd tmp
%ZIP7% x ..\%z
%ZIP7% a ..\%z.7z -r -mx9 *
cd ..
rmdir /s /q tmp
)
まず、ZIP7
変数はへのパスで定義されます7z.exe
。次にfor
現在のディレクトリ内のすべての zip ファイルを反復処理します。各 zip ファイルはディレクトリに抽出され、最大圧縮 (オプション)tmp
を使用して 7-Zip で再圧縮されます。-mx9
これらのコマンドはバッチ ファイルに記述できます。この場合、 -loop 変数%
でdouble を使用しますfor
。つまり、%%z
の代わりにを使用します%z
。
答え3
ReZip フリーウェアが役立ちます:zipada55-bin-win32.zipまず、このrezip -comp -int archive.zip
コマンドは、追加のインストールなしでも十分な機能を発揮します。さらに圧縮率を高めるには、zip、7z、kzip、advzip をダウンロードし、オプションなしで ReZip を実行する必要があります-int
。コマンドライン オプションの完全なセットは次のとおりです。
Options: -defl : repack archive only with the Deflate
subformat (most compatible)
-fast_dec : repack archive only with fast decompressing subformats
-int : use internal Zip-Ada algorithms only, no external call
-touch : set time stamps to now
-lower : set full file names to lower case
-del_comm : delete comment
-comp : compare original and repacked archives (paranoid mode)
-rs=n : loop many times over a single compression approach
having randomization, and keep optimum when size is
stable after n attempts in a row
答え4
ハード ドライブ上のすべての zip ファイルを検索する PowerShell スクリプトを作成し、見つかった各 zip アーカイブについて、すべてのファイルを抽出し、目的の形式で再度圧縮します。
組み込みの ZIP 関数を使用するか、PowerShell から 7zip コマンドライン ツールを呼び出すことができます。